1.00 s

: 5664 total, 848 failed, 4816 passed

  • Collapse |
  • Expand
  • 1.00 s
    test_featurizers
    • 119 ms
      test_molar_mass_featurizer
      • 8 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12_[Cl]-expected0)
        • PASSED [ 0%]
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected1)
        • PASSED [ 0%]
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected2)
        • PASSED [ 0%]
      • 0 ms
        passed(CC(=O)NCCCOc1cccc(CN2CCCCC2)c1-expected3)
        • PASSED [ 0%]
      • 1 ms
        passed(Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected4)
        • PASSED [ 0%]
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)C(=O)C1=O-expected5)
        • PASSED [ 0%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected6)
        • PASSED [ 0%]
      • 0 ms
        passed(Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O-expected7)
        • PASSED [ 0%]
      • 0 ms
        passed(COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1-expected8)
        • PASSED [ 0%]
      • 0 ms
        passed(NC(N)=NC(=O)c1nc(Cl)c(N)nc1N-expected9)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O-expected10)
        • PASSED [ 0%]
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](F)[C@@H](CO)O2)c(=O)[nH]c1=O-expected11)
        • PASSED [ 0%]
      • 0 ms
        passed(ClCCl-expected12)
        • PASSED [ 0%]
      • 0 ms
        passed(CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected13)
        • PASSED [ 0%]
      • 0 ms
        passed(CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected14)
        • PASSED [ 0%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1-expected15)
        • PASSED [ 0%]
      • 1 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected16)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2-expected17)
        • PASSED [ 0%]
      • 0 ms
        passed(COc1ccc(Cl)cc1C(=O)NCCc1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1-expected18)
        • PASSED [ 0%]
      • 0 ms
        passed(Nc1nnc(-c2cccc(Cl)c2Cl)c(N)n1-expected19)
        • PASSED [ 0%]
      • 0 ms
        passed(CCCC(C)C-expected20)
        • PASSED [ 0%]
      • 0 ms
        passed(C[C@H](N)Cc1ccccc1-expected21)
        • PASSED [ 0%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected22)
        • PASSED [ 0%]
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2-expected23)
        • PASSED [ 0%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCc2cccs2)CC1-expected24)
        • PASSED [ 0%]
      • 0 ms
        passed(CCNC(=NC#N)NCCSCc1ncccc1Br-expected25)
        • PASSED [ 0%]
      • 0 ms
        passed(Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1-expected26)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1-expected27)
        • PASSED [ 0%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected28)
        • PASSED [ 0%]
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O_O-expected29)
        • PASSED [ 0%]
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected30)
        • PASSED [ 0%]
      • 0 ms
        passed(C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected31)
        • PASSED [ 0%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected32)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33)
        • PASSED [ 0%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1CCN(CCc2ccccc2)CC1-expected34)
        • PASSED [ 0%]
      • 0 ms
        passed(CCOC(=O)c1cncn1C(C)c1ccccc1-expected35)
        • PASSED [ 0%]
      • 0 ms
        passed(CN(C)c1cc(-c2nc(N)n[nH]2)ccn1-expected36)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected37)
        • PASSED [ 0%]
      • 0 ms
        passed(Nc1ccc(-c2nc3ccc(O)cc3s2)cc1I-expected38)
        • PASSED [ 0%]
      • 0 ms
        passed(CC(=O)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected39)
        • PASSED [ 0%]
      • 0 ms
        passed(CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2-expected40)
        • PASSED [ 0%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CO)NC(=O)C(Cl)Cl)cc1-expected41)
        • PASSED [ 0%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2ccccc2)cs1-expected42)
        • PASSED [ 0%]
      • 0 ms
        passed(Cc1cccc(C)c1OCC(C)N-expected43)
        • PASSED [ 0%]
      • 0 ms
        passed(CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C-expected44)
        • PASSED [ 0%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected45)
        • PASSED [ 0%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](O)c3ccccc3)[C@H]2SC1-expected46)
        • PASSED [ 0%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected47)
        • PASSED [ 0%]
      • 0 ms
        passed(O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1-expected48)
        • PASSED [ 0%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@H]1C[C@@H]2[C@@H](O)c1ccnc2ccc(OC)cc12-expected49)
        • PASSED [ 0%]
      • 0 ms
        passed(CCc1ccccc1-expected50)
        • PASSED [ 0%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2cccc(N)c2)cs1-expected51)
        • PASSED [ 0%]
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected52)
        • PASSED [ 0%]
      • 1 ms
        passed(CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1-expected53)
        • PASSED [ 0%]
      • 0 ms
        passed(NCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected54)
        • PASSED [ 0%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1-expected55)
        • PASSED [ 0%]
      • 0 ms
        passed(CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected56)
        • PASSED [ 1%]
      • 0 ms
        passed(CNCCc1ccccn1-expected57)
        • PASSED [ 1%]
      • 0 ms
        passed(CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21_[Cl-]_[H+]-expected58)
        • PASSED [ 1%]
        • [14:08:06] WARNING: not removing hydrogen atom without neighbors
          [14:08:06] WARNING: not removing hydrogen atom without neighbors
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected59)
        • PASSED [ 1%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected60)
        • PASSED [ 1%]
      • 0 ms
        passed(CNCCCC12CCC(c3ccccc31)c1ccccc12-expected61)
        • PASSED [ 1%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected62)
        • PASSED [ 1%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected63)
        • PASSED [ 1%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1_[Na+]-expected64)
        • PASSED [ 1%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected65)
        • PASSED [ 1%]
      • 0 ms
        passed(C1CCCCC1-expected66)
        • PASSED [ 1%]
      • 0 ms
        passed(Cc1csc(N=C(N)N)n1-expected67)
        • PASSED [ 1%]
      • 0 ms
        passed(CCCN(CCC)CCc1ccc(O)c2c1CC(=O)N2-expected68)
        • PASSED [ 1%]
      • 0 ms
        passed(CN1C[C@@H]2c3cc(Cl)ccc3Oc3ccccc3[C@@H]2C1-expected69)
        • PASSED [ 1%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70)
        • PASSED [ 1%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected71)
        • PASSED [ 1%]
      • 0 ms
        passed(CC[N+](C)(C)Cc1ccccc1Br_Cc1ccc(S(=O)(=O)[O-])cc1-expected72)
        • PASSED [ 1%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected73)
        • PASSED [ 1%]
      • 0 ms
        passed(Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74)
        • PASSED [ 1%]
      • 0 ms
        passed(CCCN(CCC)CCc1cccc2c1CC(=O)N2-expected75)
        • PASSED [ 1%]
      • 0 ms
        passed(Clc1ccc2c(c1)[C@H]1CNC[C@H]1c1ccccc1O2-expected76)
        • PASSED [ 1%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected77)
        • PASSED [ 1%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1-expected78)
        • PASSED [ 1%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected79)
        • PASSED [ 1%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1C(NC(C)=O)CC2-expected80)
        • PASSED [ 1%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected81)
        • PASSED [ 1%]
      • 0 ms
        passed(Cc1ncsc1CCCl-expected82)
        • PASSED [ 1%]
      • 0 ms
        passed(CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1-expected83)
        • PASSED [ 1%]
      • 0 ms
        passed(FC(F)(F)CCl-expected84)
        • PASSED [ 1%]
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected85)
        • PASSED [ 1%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86)
        • PASSED [ 1%]
      • 0 ms
        passed(C=CC[C@H](N)c1ccccc1-c1noc2ccccc12-expected87)
        • PASSED [ 1%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2O-expected88)
        • PASSED [ 1%]
      • 0 ms
        passed(CC(=O)Nc1ccc(O)cc1-expected89)
        • PASSED [ 1%]
      • 0 ms
        passed(CC(=O)Oc1ccccc1C(=O)O-expected90)
        • PASSED [ 1%]
      • 0 ms
        passed(O=c1ncnc2[nH][nH]cc1-2-expected91)
        • PASSED [ 1%]
      • 0 ms
        passed(CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O-expected92)
        • PASSED [ 1%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O_Cn1c(=O)c2[nH]cnc2n(C)c1=O_NCCN-expected93)
        • PASSED [ 1%]
      • 0 ms
        passed(CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1-expected94)
        • PASSED [ 1%]
      • 1 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O_O_O_O-expected95)
        • PASSED [ 1%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected96)
        • PASSED [ 1%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected97)
        • PASSED [ 1%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2_O=C(O)CCC(=O)O-expected98)
        • PASSED [ 1%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2)=NC1O-expected99)
        • PASSED [ 1%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1-expected100)
        • PASSED [ 1%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@@]4(O)[C@@H](C2)N(C)CC[C@]314-expected101)
        • PASSED [ 1%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected102)
        • PASSED [ 1%]
      • 0 ms
        passed(CN1CCCC(CN2c3ccccc3Sc3ccccc32)C1-expected103)
        • PASSED [ 1%]
      • 0 ms
        passed(NC1=NC(=O)C(c2ccccc2)O1-expected104)
        • PASSED [ 1%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@@]2(C)c3cc(O)ccc3C[C@@H]1[C@H]2C-expected105)
        • PASSED [ 1%]
      • 0 ms
        passed(CCc1cc(C(N)=S)ccn1-expected106)
        • PASSED [ 1%]
      • 0 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](O[C@@H]3O[C@@H]5CO[C@@H](C)O[C@H]5[C@H](O)[C@H]3O)C3COC(=O)[C@@H]32)OCO4)cc(OC)c1O-expected107)
        • PASSED [ 1%]
      • 0 ms
        passed(NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1-expected108)
        • PASSED [ 1%]
      • 0 ms
        passed(OC(Cn1cncn1)(Cn1cncn1)c1ccc(F)cc1F-expected109)
        • PASSED [ 1%]
      • 0 ms
        passed(O=C([O-])P(=O)([O-])[O-]_[Na+]_[Na+]_[Na+]-expected110)
        • PASSED [ 1%]
      • 0 ms
        passed(NCC1(CC(=O)O)CCCCC1-expected111)
        • PASSED [ 1%]
      • 0 ms
        passed(CCOc1ccc2ccccc2c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)[O-]_[Na+]-expected112)
        • PASSED [ 1%]
      • 1 ms
        passed(CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21-expected113)
        • PASSED [ 2%]
      • 0 ms
        passed(Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C-expected114)
        • PASSED [ 2%]
      • 0 ms
        passed(COc1ccc(CCN2CCC(Nc3nc4ccccc4n3Cc3ccc(F)cc3)CC2)cc1-expected115)
        • PASSED [ 2%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected116)
        • PASSED [ 2%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected117)
        • PASSED [ 2%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected118)
        • PASSED [ 2%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected119)
        • PASSED [ 2%]
      • 0 ms
        passed(C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O-expected120)
        • PASSED [ 2%]
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2-expected121)
        • PASSED [ 2%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1_[Na+]-expected122)
        • PASSED [ 2%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123)
        • PASSED [ 2%]
      • 0 ms
        passed(O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1-expected124)
        • PASSED [ 2%]
      • 0 ms
        passed(CCCN1C[C@H](CSC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected125)
        • PASSED [ 2%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126)
        • PASSED [ 2%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected127)
        • PASSED [ 2%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1-expected128)
        • PASSED [ 2%]
      • 0 ms
        passed(c1ccc(C2(N3CCCCC3)CCCCC2)cc1-expected129)
        • PASSED [ 2%]
      • 0 ms
        passed(NNCCc1ccccc1_O=S(=O)(O)O-expected130)
        • PASSED [ 2%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NC(=O)NC1=O-expected131)
        • PASSED [ 2%]
      • 0 ms
        passed(NC(=O)OCCCc1ccccc1-expected132)
        • PASSED [ 2%]
      • 0 ms
        passed(CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected133)
        • PASSED [ 2%]
      • 0 ms
        passed(NCC(O)c1ccc(O)c(O)c1-expected134)
        • PASSED [ 2%]
      • 0 ms
        passed(COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1-expected135)
        • PASSED [ 2%]
      • 0 ms
        passed(Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected136)
        • PASSED [ 2%]
      • 0 ms
        passed(OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O-expected137)
        • PASSED [ 2%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]-expected138)
        • PASSED [ 2%]
      • 0 ms
        passed(O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl-expected139)
        • PASSED [ 2%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O-expected140)
        • PASSED [ 2%]
      • 0 ms
        passed(CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1-expected141)
        • PASSED [ 2%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142)
        • PASSED [ 2%]
      • 0 ms
        passed(NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl-expected143)
        • PASSED [ 2%]
      • 0 ms
        passed(CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1-expected144)
        • PASSED [ 2%]
      • 0 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)O-expected145)
        • PASSED [ 2%]
      • 0 ms
        passed(Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1-expected146)
        • PASSED [ 2%]
      • 0 ms
        passed(C[C@]12C[C@H](O)[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2C(=O)CO-expected147)
        • PASSED [ 2%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected148)
        • PASSED [ 2%]
      • 0 ms
        passed(OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1-expected149)
        • PASSED [ 2%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected150)
        • PASSED [ 2%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3COc3ccc(Cl)cc32)CC1-expected151)
        • PASSED [ 2%]
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected152)
        • PASSED [ 2%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CC1CC1-expected153)
        • PASSED [ 2%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@@H]4C[C@H](O)CC[C@]4(C)[C@H]3CC[C@]12C-expected154)
        • PASSED [ 2%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NCNC1=O-expected155)
        • PASSED [ 2%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)c1ccc(N)cc1-expected156)
        • PASSED [ 2%]
      • 0 ms
        passed(OC(CCN1CCCC1)(c1ccccc1)C1CCCCC1-expected157)
        • PASSED [ 2%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccccc21-expected158)
        • PASSED [ 2%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2[nH]ccc12-expected159)
        • PASSED [ 2%]
      • 1 ms
        passed(CO[C@H](C(=O)[C@@H](O)[C@@H](C)O)[C@@H]1Cc2cc3cc(O[C@H]4C[C@@H](O[C@H]5C[C@@H](O)[C@H](O)[C@@H](C)O5)[C@H](O)[C@@H](C)O4)c(C)c(O)c3c(O)c2C(=O)[C@H]1O[C@H]1C[C@@H](O[C@H]2C[C@@H](O[C@H]3C[C@](C)(O)[C@H](O)[C@@H](C)O3)[C@H](O)[C@@H](C)O2)[C@H](O)[C@@H](C)O1-expected160)
        • PASSED [ 2%]
      • 0 ms
        passed(CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161)
        • PASSED [ 2%]
      • 1 ms
        passed(O=C(C1CCCCC1)N1CC(=O)N2CCc3ccccc3C2C1-expected162)
        • PASSED [ 2%]
      • 0 ms
        passed(COc1cc(Cc2cnc(N)nc2N)cc(OC)c1OC-expected163)
        • PASSED [ 2%]
      • 0 ms
        passed(COc1cc(NCc2ccc3nc(N)nc(N)c3c2C)cc(OC)c1OC-expected164)
        • PASSED [ 2%]
      • 0 ms
        passed(NC(CO)(CO)CO-expected165)
        • PASSED [ 2%]
      • 0 ms
        passed(NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12-expected166)
        • PASSED [ 2%]
      • 0 ms
        passed(NC(N)=O-expected167)
        • PASSED [ 2%]
      • 0 ms
        passed(O=c1ccc2ccccc2o1-expected168)
        • PASSED [ 2%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)c2ccc(N)cc2)cc1-expected169)
        • PASSED [ 3%]
      • 0 ms
        passed(C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C-expected170)
        • PASSED [ 3%]
      • 0 ms
        passed(O=c1c(Cc2c(O)oc3ccccc3c2=O)c(O)oc2ccccc12-expected171)
        • PASSED [ 3%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1-expected172)
        • PASSED [ 3%]
      • 0 ms
        passed(CC/C(=C(/CC)c1ccc(O)cc1)c1ccc(O)cc1-expected173)
        • PASSED [ 3%]
      • 1 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5CC[C@]5(C)[C@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected174)
        • PASSED [ 3%]
      • 0 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5C[C@@H](O)[C@]5(C)[C@@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected175)
        • PASSED [ 3%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1-expected176)
        • PASSED [ 3%]
      • 0 ms
        passed(CC(CN1c2ccccc2Sc2ccccc21)N(C)C-expected177)
        • PASSED [ 3%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CC(C)N(C)C)c1ccccc1S2-expected178)
        • PASSED [ 3%]
      • 0 ms
        passed(CC(C)c1cccc(C(C)C)c1O-expected179)
        • PASSED [ 3%]
      • 0 ms
        passed(CNCCCC1c2ccccc2C=Cc2ccccc21-expected180)
        • PASSED [ 3%]
      • 0 ms
        passed(O=c1cc[nH]nc1-expected181)
        • PASSED [ 3%]
      • 0 ms
        passed(Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21-expected182)
        • PASSED [ 3%]
      • 1 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected183)
        • PASSED [ 3%]
      • 1 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected184)
        • PASSED [ 3%]
      • 0 ms
        passed(C=CCC1(C(C)CCC)C(=O)NC(=O)NC1=O-expected185)
        • PASSED [ 3%]
      • 1 ms
        passed(O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1_[Cl-]_[H+]-expected186)
        • PASSED [ 3%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C1C(=O)c2ccccc2C(O)=C1C1CCC(c2ccc(Cl)cc2)CC1-expected187)
        • PASSED [ 3%]
      • 0 ms
        passed(O=C(O)CCCCCCCC(=O)O-expected188)
        • PASSED [ 3%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)C(C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)CN(C)[C@H](C)[C@@H](O)[C@]1(C)O-expected189)
        • PASSED [ 3%]
      • 0 ms
        passed(CC(C[N+](C)(C)C)OC(N)=O_[Cl-]-expected190)
        • PASSED [ 3%]
      • 1 ms
        passed(CC(C)C[C@H]1C(=O)N2CCC[C@H]2[C@]2(O)O[C@](NC(=O)[C@@H]3C=C4c5cccc6[nH]c(Br)c(c56)C[C@H]4N(C)C3)(C(C)C)C(=O)N12-expected191)
        • PASSED [ 3%]
      • 1 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected192)
        • PASSED [ 3%]
      • 0 ms
        passed(NCCc1ccc(O)c(O)c1-expected193)
        • PASSED [ 3%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected194)
        • PASSED [ 3%]
      • 1 ms
        passed(C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21_O-expected195)
        • PASSED [ 3%]
      • 0 ms
        passed(CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1_[Cl]-expected196)
        • PASSED [ 3%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1-expected197)
        • PASSED [ 3%]
      • 0 ms
        passed(CC(C)[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)CNC(=O)[C@@H](C)NC(=O)[C@@H](N)Cc1ccc(O)cc1)C(N)=O-expected198)
        • PASSED [ 3%]
      • 0 ms
        passed(CN[C@@H](C)[C@H](O)c1ccccc1-expected199)
        • PASSED [ 3%]
      • 0 ms
        passed(CNC[C@H](O)c1ccc(O)c(O)c1-expected200)
        • PASSED [ 3%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected201)
        • PASSED [ 3%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C@@H]2O-expected202)
        • PASSED [ 3%]
      • 0 ms
        passed(Nc1c2c(nc3ccccc13)CCCC2-expected203)
        • PASSED [ 3%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2)c2cc(Cl)ccc21-expected204)
        • PASSED [ 3%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C1CC(=O)C(CC(C)C)CN1CC2-expected205)
        • PASSED [ 3%]
      • 0 ms
        passed(CCCCCc1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(C)=C[C@@H]21-expected206)
        • PASSED [ 3%]
      • 0 ms
        passed(COC1=CC=C2[C@H]3Cc4ccc(OC)c5c4[C@@]2(CCN3C)[C@H]1O5-expected207)
        • PASSED [ 3%]
      • 0 ms
        passed(CCSc1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected208)
        • PASSED [ 3%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCCN1C)c1ccccc1S2-expected209)
        • PASSED [ 3%]
      • 0 ms
        passed(CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected210)
        • PASSED [ 3%]
      • 0 ms
        passed(N[C@@H]1C[C@H]1c1ccccc1_[Cl-]_[H+]-expected211)
        • PASSED [ 3%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12-expected212)
        • PASSED [ 3%]
      • 0 ms
        passed(CS(=O)(=O)OCCCCOS(C)(=O)=O-expected213)
        • PASSED [ 3%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1-expected214)
        • PASSED [ 3%]
      • 0 ms
        passed(CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12-expected215)
        • PASSED [ 3%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC_O-expected216)
        • PASSED [ 3%]
      • 0 ms
        passed(Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1-expected217)
        • PASSED [ 3%]
      • 0 ms
        passed(C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2_[Br-]-expected218)
        • PASSED [ 3%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CCC2=O-expected219)
        • PASSED [ 3%]
      • 0 ms
        passed(C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl-expected220)
        • PASSED [ 3%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C-expected221)
        • PASSED [ 3%]
      • 0 ms
        passed(CC(Cc1ccc(O)cc1)NCC(O)c1cc(O)cc(O)c1-expected222)
        • PASSED [ 3%]
      • 0 ms
        passed(O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1F-expected223)
        • PASSED [ 3%]
      • 0 ms
        passed(Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected224)
        • PASSED [ 3%]
      • 0 ms
        passed(O=c1[nH]cc(F)c(=O)[nH]1-expected225)
        • PASSED [ 3%]
      • 0 ms
        passed(NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl-expected226)
        • PASSED [ 4%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1-expected227)
        • PASSED [ 4%]
      • 0 ms
        passed(C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1_[Br-]-expected228)
        • PASSED [ 4%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected229)
        • PASSED [ 4%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected230)
        • PASSED [ 4%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected231)
        • PASSED [ 4%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CCCCC1-expected232)
        • PASSED [ 4%]
      • 0 ms
        passed(COc1cc(C(=O)N2CCOCC2)cc(OC)c1OC-expected233)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(CN(C)C)CN1c2ccccc2CCc2ccccc21-expected234)
        • PASSED [ 4%]
      • 0 ms
        passed(CCCCNC(=O)OCC(C)(CCC)COC(N)=O-expected235)
        • PASSED [ 4%]
      • 0 ms
        passed(O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1-expected236)
        • PASSED [ 4%]
      • 0 ms
        passed(CCCC(CCC)C(=O)O-expected237)
        • PASSED [ 4%]
      • 0 ms
        passed(CN(C)C/C=C(/c1ccc(Br)cc1)c1cccnc1-expected238)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C)N=c1cc2n(-c3ccc(Cl)cc3)c3ccccc3nc-2cc1Nc1ccc(Cl)cc1-expected239)
        • PASSED [ 4%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1[C@@H](NC(C)=O)CC2-expected240)
        • PASSED [ 4%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1-expected241)
        • PASSED [ 4%]
      • 0 ms
        passed(NC1CONC1=O-expected242)
        • PASSED [ 4%]
      • 0 ms
        passed(NC(=O)NO-expected243)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2_[Br-]-expected244)
        • PASSED [ 4%]
      • 0 ms
        passed(NC(N)=N/N=C/c1c(Cl)cccc1Cl-expected245)
        • PASSED [ 4%]
      • 0 ms
        passed(NC(N)=NCCN1CCCCCCC1-expected246)
        • PASSED [ 4%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2-expected247)
        • PASSED [ 4%]
      • 0 ms
        passed(NNc1nncc2ccccc12-expected248)
        • PASSED [ 4%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O-expected249)
        • PASSED [ 4%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected250)
        • PASSED [ 4%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O-expected251)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C)Cc1ccc(C(C)C(=O)O)cc1-expected252)
        • PASSED [ 4%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected253)
        • PASSED [ 4%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected254)
        • PASSED [ 4%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCC[C@H]2O-expected255)
        • PASSED [ 4%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2-expected256)
        • PASSED [ 4%]
      • 0 ms
        passed(O=NN(CCCl)C(=O)NCCCl-expected257)
        • PASSED [ 4%]
      • 1 ms
        passed(CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O-expected258)
        • PASSED [ 4%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(O)C(O)C1O-expected259)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1-expected260)
        • PASSED [ 4%]
      • 0 ms
        passed(O=C(c1ccccc1)c1ccc2n1CCC2C(=O)O-expected261)
        • PASSED [ 4%]
      • 0 ms
        passed(C[C@H](N)[C@H](O)c1cccc(O)c1-expected262)
        • PASSED [ 4%]
      • 0 ms
        passed(NNC(=O)c1ccncc1-expected263)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(O)c(O)c1-expected264)
        • PASSED [ 4%]
      • 0 ms
        passed(O=c1c(O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)c(-c2ccc(O)c(O)c2)oc2cc(O)cc(O)c12-expected265)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected266)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(CCc1ccccc1)NCC(O)c1ccc(O)c(C(N)=O)c1-expected267)
        • PASSED [ 4%]
      • 0 ms
        passed(N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O-expected268)
        • PASSED [ 4%]
      • 0 ms
        passed(OCC(O)C(O)C(O)C(O)CO-expected269)
        • PASSED [ 4%]
      • 0 ms
        passed(C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270)
        • PASSED [ 4%]
      • 0 ms
        passed(Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl-expected271)
        • PASSED [ 4%]
      • 0 ms
        passed(Cc1cccc(Nc2ccccc2C(=O)O)c1C-expected272)
        • PASSED [ 4%]
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1nc[nH]c1C-expected273)
        • PASSED [ 4%]
      • 0 ms
        passed(Clc1cccc(Cl)c1NC1=NCCN1-expected274)
        • PASSED [ 4%]
      • 0 ms
        passed(O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1-expected275)
        • PASSED [ 4%]
      • 0 ms
        passed(COCCc1ccc(OCC(O)CNC(C)C)cc1-expected276)
        • PASSED [ 4%]
      • 0 ms
        passed(Cc1ncc([N+](=O)[O-])n1CCO-expected277)
        • PASSED [ 4%]
      • 0 ms
        passed(CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C-expected278)
        • PASSED [ 4%]
      • 0 ms
        passed(CN(C)c1ccc(O)c2c1C[C@H]1C[C@H]3[C@H](N(C)C)C(O)=C(C(N)=O)C(=O)[C@@]3(O)C(O)=C1C2=O-expected279)
        • PASSED [ 4%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected280)
        • PASSED [ 4%]
      • 0 ms
        passed(CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C_[Br-]-expected281)
        • PASSED [ 4%]
      • 0 ms
        passed(NC(=O)c1cnccn1-expected282)
        • PASSED [ 4%]
      • 0 ms
        passed(CN(C)C(=O)Oc1ccc[n+](C)c1_[Br-]-expected283)
        • PASSED [ 5%]
      • 0 ms
        passed(CCc1nc(N)nc(N)c1-c1ccc(Cl)cc1-expected284)
        • PASSED [ 5%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@@H]1C[C@H]2[C@H](O)c1ccnc2ccc(OC)cc12-expected285)
        • PASSED [ 5%]
      • 0 ms
        passed(NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O-expected286)
        • PASSED [ 5%]
      • 0 ms
        passed(C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1_[Br-]-expected287)
        • PASSED [ 5%]
      • 0 ms
        passed(COc1ccc(CN(CCN(C)C)c2ccccn2)cc1-expected288)
        • PASSED [ 5%]
      • 0 ms
        passed(c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2-expected289)
        • PASSED [ 5%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C-expected290)
        • PASSED [ 5%]
      • 0 ms
        passed(CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21-expected291)
        • PASSED [ 5%]
      • 0 ms
        passed(CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1-expected292)
        • PASSED [ 5%]
      • 0 ms
        passed(CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected293)
        • PASSED [ 5%]
      • 0 ms
        passed(C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O-expected294)
        • PASSED [ 5%]
      • 0 ms
        passed(COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1_[Cl-]_[Cl-]_[Cl-]_[H+]_[H+]_[H+]-expected295)
        • PASSED [ 5%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected296)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1-expected297)
        • PASSED [ 5%]
      • 0 ms
        passed(CN1CCN2c3ccccc3Cc3ccccc3C2C1-expected298)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected299)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1-expected300)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected301)
        • PASSED [ 5%]
      • 0 ms
        passed(FCOC(C(F)(F)F)C(F)(F)F-expected302)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(=O)Nc1c(I)c(NC(C)=O)c(I)c(C(=O)[O-])c1I_[Na+]-expected303)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1-expected304)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O-expected305)
        • PASSED [ 5%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N=C(N)N)[C@@H](O)[C@@H]3N=C(N)N)O[C@@H](C)[C@]2(O)C=O)O[C@@H](CO)[C@H](O)[C@H]1O-expected306)
        • PASSED [ 5%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1-expected307)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C-expected308)
        • PASSED [ 5%]
      • 0 ms
        passed(C[C@H]1C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2CC[C@]3(O)C(=O)CO)[C@@]2(C)C=CC(=O)C=C12-expected309)
        • PASSED [ 5%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected310)
        • PASSED [ 5%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@H]43)[C@@H]1CC[C@@H]2O-expected311)
        • PASSED [ 5%]
      • 0 ms
        passed(CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O-expected312)
        • PASSED [ 5%]
      • 0 ms
        passed(OCc1cccnc1-expected313)
        • PASSED [ 5%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C-expected314)
        • PASSED [ 5%]
      • 0 ms
        passed(NCC(O)c1cccc(O)c1-expected315)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(CCc1ccccc1)NC(C)C(O)c1ccc(O)cc1-expected316)
        • PASSED [ 5%]
      • 0 ms
        passed(C[C@]12COC(=O)C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected317)
        • PASSED [ 5%]
      • 0 ms
        passed(O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1-expected318)
        • PASSED [ 5%]
      • 0 ms
        passed(CN1CCN2c3ncccc3Cc3ccccc3C2C1-expected319)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1ccnc2c1NC(=O)c1cccnc1N2C1CC1-expected320)
        • PASSED [ 5%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected321)
        • PASSED [ 5%]
      • 0 ms
        passed(CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1-expected322)
        • PASSED [ 5%]
      • 0 ms
        passed(Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1-expected323)
        • PASSED [ 5%]
      • 0 ms
        passed(CC/C(=C(\\c1ccccc1)c1ccc(OCCN(C)C)cc1)c1ccccc1-expected324)
        • PASSED [ 5%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected325)
        • PASSED [ 5%]
      • 0 ms
        passed(CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1-expected326)
        • PASSED [ 5%]
      • 0 ms
        passed(Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1-expected327)
        • PASSED [ 5%]
      • 0 ms
        passed(NS(=O)(=O)Cc1noc2ccccc12-expected328)
        • PASSED [ 5%]
      • 1 ms
        passed(C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O-expected329)
        • PASSED [ 5%]
      • 0 ms
        passed(Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O_[Ca+2]-expected330)
        • PASSED [ 5%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12_O_O-expected331)
        • PASSED [ 5%]
      • 0 ms
        passed(COc1ccc(Cc2nccc3cc(OC)c(OC)cc23)cc1OC-expected332)
        • PASSED [ 5%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O-expected333)
        • PASSED [ 5%]
      • 0 ms
        passed(CCOc1ccc(NC(C)=O)cc1-expected334)
        • PASSED [ 5%]
      • 0 ms
        passed(Nc1ccc(N=Nc2ccccc2)c(N)n1-expected335)
        • PASSED [ 5%]
      • 0 ms
        passed(CN(C)CCC(c1ccccc1)c1ccccn1-expected336)
        • PASSED [ 5%]
      • 0 ms
        passed(O=C1OC(c2ccc(O)cc2)(c2ccc(O)cc2)c2ccccc21-expected337)
        • PASSED [ 5%]
      • 0 ms
        passed(CC(COc1ccccc1)N(CCCl)Cc1ccccc1-expected338)
        • PASSED [ 5%]
      • 0 ms
        passed(CCCCC1C(=O)N(c2ccccc2)N(c2ccccc2)C1=O-expected339)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)n1-expected340)
        • PASSED [ 6%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2-expected341)
        • PASSED [ 6%]
      • 1 ms
        passed(CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12-expected342)
        • PASSED [ 6%]
      • 1 ms
        passed(Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1-expected343)
        • PASSED [ 6%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C-expected344)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345)
        • PASSED [ 6%]
      • 0 ms
        passed(Nc1[nH]c(=O)ncc1F-expected346)
        • PASSED [ 6%]
      • 0 ms
        passed(NC(N)=NCC1COC2(CCCCC2)O1-expected347)
        • PASSED [ 6%]
      • 0 ms
        passed(O=NN(CCCl)C(=O)NC1CCCCC1-expected348)
        • PASSED [ 6%]
      • 0 ms
        passed(O=S(=O)([O-])CCS_[Na+]-expected349)
        • PASSED [ 6%]
      • 0 ms
        passed(CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O-expected350)
        • PASSED [ 6%]
      • 0 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](OC3OC5COC(c6cccs6)OC5C(O)C3O)[C@H]3COC(=O)[C@H]23)OCO4)cc(OC)c1O-expected351)
        • PASSED [ 6%]
      • 0 ms
        passed(S=P(N1CC1)(N1CC1)N1CC1-expected352)
        • PASSED [ 6%]
      • 2 ms
        passed(CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4cc3ccc4O)[C@H](O)c3ccc(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O-expected353)
        • PASSED [ 6%]
      • 0 ms
        passed(CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected354)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected355)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected356)
        • PASSED [ 6%]
      • 0 ms
        passed(CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1-expected357)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3CC[C@]12C-expected358)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12-expected359)
        • PASSED [ 6%]
      • 0 ms
        passed(CC1OC(O[C@@H]2C=C3CC[C@@H]4[C@H](CC[C@]5(C)[C@@H](c6ccc(=O)oc6)CC[C@]45O)[C@@]3(C)CC2)C(O)C(O)C1O-expected360)
        • PASSED [ 6%]
      • 0 ms
        passed(COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1-expected361)
        • PASSED [ 6%]
      • 0 ms
        passed(NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1-expected362)
        • PASSED [ 6%]
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1-expected363)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(O)/C=C\\C(=O)O_O=C(O)/C=C\\C(=O)O_c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1-expected364)
        • PASSED [ 6%]
      • 0 ms
        passed(OCc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected365)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(Cl)(Cl)Cl-expected366)
        • PASSED [ 6%]
      • 0 ms
        passed(FC(F)(F)CCl-expected367)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)CO-expected368)
        • PASSED [ 6%]
      • 0 ms
        passed(CCC(C)(C)C-expected369)
        • PASSED [ 6%]
      • 0 ms
        passed(Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O-expected370)
        • PASSED [ 6%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected371)
        • PASSED [ 6%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2cnc[nH]2)CC1-expected372)
        • PASSED [ 6%]
      • 0 ms
        passed(COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C-expected373)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(O)c1ccccc1O-expected374)
        • PASSED [ 6%]
      • 0 ms
        passed(CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12-expected375)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12-expected376)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12Cc3cn[nH]c3C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected377)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O-expected378)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected379)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@]2(C)OC(=O)CC[C@@H]12-expected380)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2O-expected381)
        • PASSED [ 6%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382)
        • PASSED [ 6%]
      • 0 ms
        passed(CCCC(C)CC-expected383)
        • PASSED [ 6%]
      • 0 ms
        passed(CCC(C)CC-expected384)
        • PASSED [ 6%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2O-expected385)
        • PASSED [ 6%]
      • 0 ms
        passed(Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C-expected386)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)NCC(O)COc1ccc(CC(N)=O)cc1-expected387)
        • PASSED [ 6%]
      • 0 ms
        passed(c1ccccc1-expected388)
        • PASSED [ 6%]
      • 0 ms
        passed(CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1-expected390)
        • PASSED [ 6%]
      • 0 ms
        passed(OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1-expected391)
        • PASSED [ 6%]
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected392)
        • PASSED [ 6%]
      • 0 ms
        passed(CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1-expected393)
        • PASSED [ 6%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@]2(C=O)[C@@H](C(=O)CO)CC[C@@H]12-expected394)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCCC[C@H]1CN1CCCC1-expected395)
        • PASSED [ 6%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2ccccc2[C@H]1CN1CCCC1-expected396)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1-expected397)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2sccc2[C@H]1CN1CCCC1-expected398)
        • PASSED [ 7%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O-expected399)
        • PASSED [ 7%]
      • 0 ms
        passed(Nc1nc(=S)c2[nH]cnc2[nH]1-expected400)
        • PASSED [ 7%]
      • 0 ms
        passed(Cc1ccc(S(=O)(=O)NC(=O)NN2CCCCCC2)cc1-expected401)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCNC(=O)NS(=O)(=O)c1ccc(C)cc1-expected402)
        • PASSED [ 7%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected403)
        • PASSED [ 7%]
      • 0 ms
        passed(Nc1nc(N)c2nc(-c3ccccc3)c(N)nc2n1-expected404)
        • PASSED [ 7%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O-expected405)
        • PASSED [ 7%]
      • 1 ms
        passed(CC(C)C1NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC1=O-expected406)
        • PASSED [ 7%]
      • 0 ms
        passed(COc1ccc(CCN(C)CCCC(C#N)(c2ccc(OC)c(OC)c2)C(C)C)cc1OC-expected407)
        • PASSED [ 7%]
      • 0 ms
        passed(CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O-expected408)
        • PASSED [ 7%]
      • 0 ms
        passed(CCC(C)=O-expected409)
        • PASSED [ 7%]
      • 0 ms
        passed(C1CC1-expected410)
        • PASSED [ 7%]
      • 0 ms
        passed(NCCCN1c2ccccc2CCc2ccccc21-expected411)
        • PASSED [ 7%]
      • 0 ms
        passed(ClCCl-expected412)
        • PASSED [ 7%]
      • 0 ms
        passed(CCOCC-expected413)
        • PASSED [ 7%]
      • 0 ms
        passed(C=COC=C-expected414)
        • PASSED [ 7%]
      • 0 ms
        passed(FC(F)OC(F)(F)C(F)Cl-expected415)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2[nH]cnc2[C@H]1CN1CCCC1-expected416)
        • PASSED [ 7%]
      • 0 ms
        passed(CC1(C)CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected417)
        • PASSED [ 7%]
      • 0 ms
        passed(CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected418)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected419)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O-expected420)
        • PASSED [ 7%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCO-expected421)
        • PASSED [ 7%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCCCO-expected422)
        • PASSED [ 7%]
      • 0 ms
        passed(COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O-expected423)
        • PASSED [ 7%]
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](N=[N+]=[N-])[C@@H](CO)O2)c(=O)[nH]c1=O-expected424)
        • PASSED [ 7%]
      • 1 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected425)
        • PASSED [ 7%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected426)
        • PASSED [ 7%]
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected427)
        • PASSED [ 7%]
      • 0 ms
        passed(C=CCC1(CC=C)C(=O)NC(=O)NC1=O-expected428)
        • PASSED [ 7%]
      • 0 ms
        passed(NC12CC3CC(CC(C3)C1)C2_[Cl-]_[H+]-expected429)
        • PASSED [ 7%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected430)
        • PASSED [ 7%]
      • 0 ms
        passed(CCC1(CCC(C)C)C(=O)NC(=O)NC1=O-expected431)
        • PASSED [ 7%]
      • 0 ms
        passed(CC(N)Cc1ccccc1-expected432)
        • PASSED [ 7%]
      • 0 ms
        passed(CCO-expected433)
        • PASSED [ 7%]
      • 0 ms
        passed(CCc1ccccc1-expected434)
        • PASSED [ 7%]
      • 0 ms
        passed(CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2-expected435)
        • PASSED [ 7%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436)
        • PASSED [ 7%]
      • 0 ms
        passed(C=COCC(F)(F)F-expected437)
        • PASSED [ 7%]
      • 0 ms
        passed(FC(F)(F)C(Cl)Br-expected438)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCCCC-expected439)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCCC-expected440)
        • PASSED [ 7%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1C-expected441)
        • PASSED [ 7%]
      • 0 ms
        passed(CCn1ccc(=O)c(O)c1C-expected442)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCn1ccc(=O)c(O)c1C-expected443)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected444)
        • PASSED [ 7%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected445)
        • PASSED [ 7%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1CCCO-expected446)
        • PASSED [ 7%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CC-expected447)
        • PASSED [ 7%]
      • 0 ms
        passed(CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1-expected448)
        • PASSED [ 7%]
      • 0 ms
        passed(Cc1cc(=O)n(-c2ccccc2)n1C-expected449)
        • PASSED [ 7%]
      • 0 ms
        passed(CN1CCc2cccc3c2[C@H]1Cc1ccc(O)c(O)c1-3-expected450)
        • PASSED [ 7%]
      • 0 ms
        passed(COC(=O)C1=CCCN(C)C1-expected451)
        • PASSED [ 7%]
      • 0 ms
        passed(O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1-expected452)
        • PASSED [ 7%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1_[Cl-]_[H+]-expected453)
        • PASSED [ 8%]
        • [14:08:07] WARNING: not removing hydrogen atom without neighbors
          [14:08:07] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C(CCCN1CCC(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected454)
        • PASSED [ 8%]
      • 0 ms
        passed(CCOC(=O)c1ccc(N)cc1-expected455)
        • PASSED [ 8%]
      • 0 ms
        passed(CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O-expected456)
        • PASSED [ 8%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2_O=S(=O)(O)O-expected457)
        • PASSED [ 8%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CC2C=CC1C2-expected458)
        • PASSED [ 8%]
      • 0 ms
        passed(CN1C(=O)NC(=O)C(C)(C2=CCCCC2)C1=O-expected459)
        • PASSED [ 8%]
      • 1 ms
        passed(CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O-expected460)
        • PASSED [ 8%]
      • 0 ms
        passed(FC(F)OC(Cl)C(F)(F)F-expected461)
        • PASSED [ 8%]
      • 0 ms
        passed(C=CCC1(C(C)C#CCC)C(=O)NC(=O)N(C)C1=O-expected462)
        • PASSED [ 8%]
      • 0 ms
        passed(COC(F)(F)C(Cl)Cl-expected463)
        • PASSED [ 8%]
      • 0 ms
        passed(CC1CCCC1-expected464)
        • PASSED [ 8%]
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1-expected465)
        • PASSED [ 8%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21-expected466)
        • PASSED [ 8%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1-expected467)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected468)
        • PASSED [ 8%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CCCC1-expected469)
        • PASSED [ 8%]
      • 0 ms
        passed(COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected470)
        • PASSED [ 8%]
      • 1 ms
        passed(O=C1CN=C(c2ccccn2)c2cc(Br)ccc2N1-expected471)
        • PASSED [ 8%]
      • 1 ms
        passed(CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1-expected472)
        • PASSED [ 8%]
      • 0 ms
        passed(CN(C)CCc1c[nH]c2ccc(O)cc12-expected473)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1-expected474)
        • PASSED [ 8%]
      • 0 ms
        passed(O=C(NCc1ccccc1)OCCO-expected475)
        • PASSED [ 8%]
      • 0 ms
        passed(CCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected476)
        • PASSED [ 8%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2C)n(C)c1=O-expected477)
        • PASSED [ 8%]
      • 0 ms
        passed(C=C(C)[C@@H]1CCC(C)=CC1c1c(O)cc(CCCCC)cc1O-expected478)
        • PASSED [ 8%]
      • 0 ms
        passed(CCC(C)C(CC)C(=O)NC(N)=O-expected479)
        • PASSED [ 8%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C=Cc2ccccc21-expected480)
        • PASSED [ 8%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCNC1)c1ccccc1S2-expected481)
        • PASSED [ 8%]
      • 0 ms
        passed(Cn1c(=O)[nH]c2ncn(C)c2c1=O-expected482)
        • PASSED [ 8%]
      • 0 ms
        passed(CCCCC-expected483)
        • PASSED [ 8%]
      • 0 ms
        passed(CCCO-expected484)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(C)=O-expected485)
        • PASSED [ 8%]
      • 0 ms
        passed(CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected486)
        • PASSED [ 8%]
      • 0 ms
        passed(CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected487)
        • PASSED [ 8%]
      • 1 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CC[C@@H](O)C1-expected488)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected489)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected490)
        • PASSED [ 8%]
      • 0 ms
        passed(CSc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected491)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected492)
        • PASSED [ 8%]
      • 0 ms
        passed(COc1cccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)c1-expected493)
        • PASSED [ 8%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected494)
        • PASSED [ 8%]
      • 0 ms
        passed(COc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected495)
        • PASSED [ 8%]
      • 1 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected496)
        • PASSED [ 8%]
      • 0 ms
        passed(CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497)
        • PASSED [ 8%]
      • 0 ms
        passed(Nn1cnc2cc3ccccc3cc2c1=O-expected498)
        • PASSED [ 8%]
      • 0 ms
        passed(OC(O)C(Cl)(Cl)Cl-expected499)
        • PASSED [ 8%]
      • 0 ms
        passed(CN=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected500)
        • PASSED [ 8%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc21-expected501)
        • PASSED [ 8%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2Sc2ccc(Cl)cc21-expected502)
        • PASSED [ 8%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2o1-expected503)
        • PASSED [ 8%]
      • 0 ms
        passed(C[N+](C)(C)CCO-expected504)
        • PASSED [ 8%]
      • 0 ms
        passed(CN1C(=O)CC(=O)N(c2ccccc2)c2cc(Cl)ccc21-expected505)
        • PASSED [ 8%]
      • 0 ms
        passed(O=C(O)CNC(=O)c1ccccc1O-expected506)
        • PASSED [ 8%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)(=O)=O)cc21-expected507)
        • PASSED [ 8%]
      • 0 ms
        passed(FC(Br)C(F)(F)F-expected508)
        • PASSED [ 8%]
      • 0 ms
        passed(Cn1cnc2c1c(=O)[nH]c(=O)n2C-expected509)
        • PASSED [ 9%]
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=S)NC1=O-expected510)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1ccccc1-expected511)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2-expected512)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1-expected513)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccccc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected514)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(S(C)(=O)=O)cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected515)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(C)[C@@H](CN1CCCC1)N(C)C(=O)Cc1ccc(Cl)c(Cl)c1-expected516)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)[C@@H](CN1CCCC1)c1ccccc1-expected517)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1cc(N/C(O)=C2\\C(=O)c3ccccc3S(=O)(=O)N2C)no1-expected518)
        • PASSED [ 9%]
      • 0 ms
        passed(C=CCN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected519)
        • PASSED [ 9%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21-expected520)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected521)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccc(Cl)cc21-expected522)
        • PASSED [ 9%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1-expected523)
        • PASSED [ 9%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected524)
        • PASSED [ 9%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected525)
        • PASSED [ 9%]
      • 0 ms
        passed(COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C-expected526)
        • PASSED [ 9%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected527)
        • PASSED [ 9%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CC1CC1-expected528)
        • PASSED [ 9%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2-expected529)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C)CCO-expected530)
        • PASSED [ 9%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1_[Cl-]_[H+]-expected531)
        • PASSED [ 9%]
        • [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(ClC=C(Cl)Cl-expected532)
        • PASSED [ 9%]
      • 0 ms
        passed(ClC(Cl)Cl-expected533)
        • PASSED [ 9%]
      • 0 ms
        passed(CNCCc1ccccn1-expected534)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected535)
        • PASSED [ 9%]
      • 0 ms
        passed(NCCc1nccs1-expected536)
        • PASSED [ 9%]
      • 0 ms
        passed(NCCc1nc(-c2ccccc2)cs1-expected537)
        • PASSED [ 9%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected538)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1cccc(C)c1-expected539)
        • PASSED [ 9%]
      • 0 ms
        passed(CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1-expected540)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1cnc(N/C(O)=C2/C(=O)c3ccccc3S(=O)(=O)N2C)s1-expected541)
        • PASSED [ 9%]
      • 1 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)C=C[C@H]3[C@H]1C5-expected542)
        • PASSED [ 9%]
      • 0 ms
        passed(O=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected543)
        • PASSED [ 9%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21-expected544)
        • PASSED [ 9%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21-expected545)
        • PASSED [ 9%]
      • 0 ms
        passed(CN1/C(=C(/O)Nc2ccccn2)C(=O)c2ccccc2S1(=O)=O-expected546)
        • PASSED [ 9%]
      • 0 ms
        passed(CS(=O)(=O)O_Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1-expected547)
        • PASSED [ 9%]
      • 1 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected548)
        • PASSED [ 9%]
      • 0 ms
        passed(CNCCCN1c2ccccc2CCc2ccccc21-expected549)
        • PASSED [ 9%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected550)
        • PASSED [ 9%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)CC[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected551)
        • PASSED [ 9%]
      • 0 ms
        passed(CN1CCC23c4c5ccc(O)c4OC2C(O)CCC3C1C5-expected552)
        • PASSED [ 9%]
      • 0 ms
        passed(CN(C)CCOC(c1ccccc1)c1ccccc1-expected553)
        • PASSED [ 9%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected554)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(CN1CCN(CCOCCO)CC1)CN1c2ccccc2Sc2ccccc21-expected555)
        • PASSED [ 9%]
      • 0 ms
        passed(COC(=O)c1ccc(C(=O)OC)cc1-expected556)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1ccccc1C-expected557)
        • PASSED [ 9%]
      • 0 ms
        passed(Cc1ccc(C)cc1-expected558)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(C)O-expected559)
        • PASSED [ 9%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected560)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected561)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1-expected562)
        • PASSED [ 9%]
      • 0 ms
        passed(CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected563)
        • PASSED [ 9%]
      • 0 ms
        passed(CN1CCN(CC(=O)N2c3ccccc3C(=O)Nc3cccnc32)CC1-expected564)
        • PASSED [ 9%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@@H](C)CN1CCCC1)c1ccccc1S2-expected565)
        • PASSED [ 9%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1-expected566)
        • PASSED [ 10%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)c1-expected567)
        • PASSED [ 10%]
      • 0 ms
        passed(CN1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected568)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1-expected569)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1-expected570)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1-expected571)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCN(CCO)C[C@@H]1CN1CC[C@@H](O)C1-expected572)
        • PASSED [ 10%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2COc2ccccc21_[Cl-]_[H+]-expected573)
        • PASSED [ 10%]
        • [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1_O=C(O)CCC(=O)O-expected574)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(CCCN1CC=C(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected575)
        • PASSED [ 10%]
      • 0 ms
        passed(C/C=C(\\CC)C(=O)NC(N)=O-expected576)
        • PASSED [ 10%]
      • 0 ms
        passed(CCC(C)(CC)OC(N)=O-expected577)
        • PASSED [ 10%]
      • 0 ms
        passed(Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2-expected578)
        • PASSED [ 10%]
      • 0 ms
        passed(CCc1ccccc1-n1c(C)nc2ccccc2c1=O-expected579)
        • PASSED [ 10%]
      • 0 ms
        passed(CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580)
        • PASSED [ 10%]
      • 0 ms
        passed(C#CC(O)(/C=C/Cl)CC-expected581)
        • PASSED [ 10%]
      • 0 ms
        passed(C#CC1(OC(N)=O)CCCCC1-expected582)
        • PASSED [ 10%]
      • 0 ms
        passed(CNCCc1ccccn1-expected583)
        • PASSED [ 10%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected584)
        • PASSED [ 10%]
      • 0 ms
        passed(NCCc1nccs1-expected585)
        • PASSED [ 10%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2c[nH]cn2)CC1-expected586)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected587)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCN(C)C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected588)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected589)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected590)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected591)
        • PASSED [ 10%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccn2)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected592)
        • PASSED [ 10%]
      • 0 ms
        passed(C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1-expected593)
        • PASSED [ 10%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC1=O-expected594)
        • PASSED [ 10%]
      • 0 ms
        passed(CCc1ccc2c(c1)N(CC(C)CN(C)C)c1ccccc1S2-expected595)
        • PASSED [ 10%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected596)
        • PASSED [ 10%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected597)
        • PASSED [ 10%]
      • 0 ms
        passed(CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected598)
        • PASSED [ 10%]
      • 0 ms
        passed(COc1cc2c3c(c1O)C1(C=CC(=O)C=C1)CC3N(C)CC2-expected599)
        • PASSED [ 10%]
      • 0 ms
        passed(CCC1(c2ccccc2)CCC(=O)NC1=O-expected600)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected601)
        • PASSED [ 10%]
      • 0 ms
        passed(Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12-expected602)
        • PASSED [ 10%]
      • 0 ms
        passed(Cc1nccc2c1[nH]c1ccccc12-expected603)
        • PASSED [ 10%]
      • 0 ms
        passed(O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1-expected604)
        • PASSED [ 10%]
      • 0 ms
        passed(CCNCc1c(CSC)cnc(C)c1O-expected605)
        • PASSED [ 10%]
      • 0 ms
        passed(CN1/C(=C(\\O)Nc2ccccn2)C(=O)c2sccc2S1(=O)=O-expected606)
        • PASSED [ 10%]
      • 0 ms
        passed(CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected607)
        • PASSED [ 10%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)C1CCCC[C@H]1N1CCCC1-expected608)
        • PASSED [ 10%]
      • 0 ms
        passed(CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected609)
        • PASSED [ 10%]
      • 0 ms
        passed(C#CCC1(OC(N)=O)CCCCC1-expected610)
        • PASSED [ 10%]
      • 0 ms
        passed(OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1_[Cl-]_[Cl-]_[H+]_[H+]-expected611)
        • PASSED [ 10%]
        • [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@H]4[C@@H](C2)N(C)CC[C@]314-expected612)
        • PASSED [ 10%]
      • 0 ms
        passed(CCC(O)(COC(N)=O)c1ccccc1-expected613)
        • PASSED [ 10%]
      • 0 ms
        passed(OCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected614)
        • PASSED [ 10%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccccc21-expected615)
        • PASSED [ 10%]
      • 0 ms
        passed(CNC1(c2ccccc2Cl)CCCCC1=O-expected616)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2[nH]1-expected617)
        • PASSED [ 10%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected618)
        • PASSED [ 10%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected619)
        • PASSED [ 10%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected620)
        • PASSED [ 10%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected621)
        • PASSED [ 10%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected622)
        • PASSED [ 10%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected623)
        • PASSED [ 11%]
      • 0 ms
        passed(CN(C)c1cc(-c2n[nH]c(N)n2)ccn1-expected624)
        • PASSED [ 11%]
      • 0 ms
        passed(Cn1c(=O)c2nc[nH]c2n(C)c1=O-expected625)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1-expected626)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected627)
        • PASSED [ 11%]
      • 0 ms
        passed(CCN(CC)CC(=O)Nc1c(C)cccc1C-expected628)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2Cl)=NC1O-expected629)
        • PASSED [ 11%]
      • 1 ms
        passed(CC(C)N1CCC(N(C(=O)Cc2ccccc2)c2ccc(Cl)cc2)CC1-expected630)
        • PASSED [ 11%]
      • 0 ms
        passed(CN(C)CCOC(=O)COc1ccc(Cl)cc1-expected631)
        • PASSED [ 11%]
      • 0 ms
        passed(Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl-expected632)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CCN=C(c2ccccc2)c2cc(Cl)ccc21-expected633)
        • PASSED [ 11%]
      • 0 ms
        passed(CCCC(C)(COC(N)=O)COC(N)=O-expected634)
        • PASSED [ 11%]
      • 0 ms
        passed(NCCn1ncc2cc(Cl)c(Cl)cc21-expected635)
        • PASSED [ 11%]
      • 0 ms
        passed(Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1-expected636)
        • PASSED [ 11%]
      • 0 ms
        passed(CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1-expected637)
        • PASSED [ 11%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected638)
        • PASSED [ 11%]
      • 0 ms
        passed(CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1-expected639)
        • PASSED [ 11%]
      • 0 ms
        passed(NCCCNCCSP(=O)(O)O-expected640)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1cc(CCN)cc(OC)c1OC-expected641)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21-expected642)
        • PASSED [ 11%]
      • 0 ms
        passed(CN[C@@H](C)Cc1ccccc1-expected643)
        • PASSED [ 11%]
      • 0 ms
        passed(Cc1ccccc1-n1c(C)nc2ccccc2c1=O-expected644)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1ccccc1OCC(O)COC(N)=O-expected645)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected646)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1ccc2c(c1)N(C[C@H](C)CN(C)C)c1ccccc1S2-expected647)
        • PASSED [ 11%]
      • 0 ms
        passed(C#CC(C)(O)CC-expected648)
        • PASSED [ 11%]
      • 0 ms
        passed(COC(=O)C(c1ccccc1)C1CCCCN1-expected649)
        • PASSED [ 11%]
      • 0 ms
        passed(CCC1(CC)C(=O)NCC(C)C1=O-expected650)
        • PASSED [ 11%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)[C@@H](O)[C@H](O)[C@H]2O)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected651)
        • PASSED [ 11%]
      • 0 ms
        passed(Nc1ccc(C(=O)O)c(O)c1-expected652)
        • PASSED [ 11%]
      • 0 ms
        passed(Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1-expected653)
        • PASSED [ 11%]
      • 0 ms
        passed(CN(C)N/N=C1/N=CN=C1C(N)=O-expected654)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(C)=O)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected655)
        • PASSED [ 11%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C1CC(=O)N(c2ccccc2)c2cc(Cl)ccc2N1-expected657)
        • PASSED [ 11%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccccc21-expected658)
        • PASSED [ 11%]
      • 0 ms
        passed(C[C@@H](CN1CC(=O)NC(=O)C1)N1CC(=O)NC(=O)C1-expected659)
        • PASSED [ 11%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2_O=C(O)/C=C\\C(=O)O-expected660)
        • PASSED [ 11%]
      • 1 ms
        passed(Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1-expected661)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(O)C=C[C@H]3[C@H]1C5-expected662)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CC=C(c2ccccc2)CC1-expected663)
        • PASSED [ 11%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected664)
        • PASSED [ 11%]
      • 0 ms
        passed(CN1CCC[C@H]1c1cccnc1-expected665)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1-expected666)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1-expected667)
        • PASSED [ 11%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2CCc2ccccc21-expected668)
        • PASSED [ 11%]
      • 0 ms
        passed(Cc1ccccc1C(OCCN(C)C)c1ccccc1-expected669)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1ccc2c(c1)[C@]13CCCC[C@@H]1[C@H](C2)N(C)CC3-expected670)
        • PASSED [ 11%]
      • 1 ms
        passed(CN1C[C@H](C(=O)N[C@]2(C)O[C@@]3(O)[C@@H]4CCCN4C(=O)[C@H](Cc4ccccc4)N3C2=O)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected671)
        • PASSED [ 11%]
      • 0 ms
        passed(CCN(CC)C(=S)SSC(=S)N(CC)CC-expected672)
        • PASSED [ 11%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673)
        • PASSED [ 11%]
      • 0 ms
        passed(CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674)
        • PASSED [ 11%]
      • 0 ms
        passed(CC[C@@H](CO)NCCN[C@@H](CC)CO-expected675)
        • PASSED [ 11%]
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC-expected676)
        • PASSED [ 11%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O-expected677)
        • PASSED [ 11%]
      • 0 ms
        passed(CNCC(O)c1ccc(O)c(O)c1-expected678)
        • PASSED [ 11%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)CC(O)(C(=O)CO)CC3O-expected679)
        • PASSED [ 12%]
      • 0 ms
        passed(C=CCSCC(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)[O-]_[Na+]-expected680)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O-expected681)
        • PASSED [ 12%]
      • 0 ms
        passed(CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected682)
        • PASSED [ 12%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected684)
        • PASSED [ 12%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NC(C(=O)O)N2CCN(CCO)CC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected685)
        • PASSED [ 12%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O[C@H]2O[C@H](CO)[C@@H](N)[C@H](O)[C@H]2O)O[C@H]2C[C@@H](N)[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N)C[C@@H]3N)O[C@@H]2[C@@H]1O-expected686)
        • PASSED [ 12%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected687)
        • PASSED [ 12%]
      • 0 ms
        passed(CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1-expected688)
        • PASSED [ 12%]
      • 0 ms
        passed(CO[C@H]1[C@@H](O)[C@H](N)[C@@H](O[C@H]2O[C@H](C(C)N)CC[C@H]2N)[C@H](O)[C@@H]1N(C)C(=O)CN-expected689)
        • PASSED [ 12%]
      • 0 ms
        passed(C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690)
        • PASSED [ 12%]
      • 0 ms
        passed(CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected691)
        • PASSED [ 12%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected692)
        • PASSED [ 12%]
      • 0 ms
        passed(NC(CO)C(=O)NNCc1ccc(O)c(O)c1O-expected693)
        • PASSED [ 12%]
      • 0 ms
        passed(CC(C)COCC(CN(Cc1ccccc1)c1ccccc1)N1CCCC1-expected694)
        • PASSED [ 12%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@H]1C-expected695)
        • PASSED [ 12%]
      • 0 ms
        passed(NCCC(O)CNC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O-expected696)
        • PASSED [ 12%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1-expected697)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699)
        • PASSED [ 12%]
      • 1 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(O)cccc1C3=O-expected700)
        • PASSED [ 12%]
      • 0 ms
        passed(NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701)
        • PASSED [ 12%]
      • 0 ms
        passed(N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1-expected702)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1-expected703)
        • PASSED [ 12%]
      • 1 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1-expected704)
        • PASSED [ 12%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705)
        • PASSED [ 12%]
      • 1 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1-expected706)
        • PASSED [ 12%]
      • 0 ms
        passed(NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1-expected707)
        • PASSED [ 12%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1_[Na+]-expected708)
        • PASSED [ 12%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1-expected709)
        • PASSED [ 12%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1-expected710)
        • PASSED [ 12%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1-expected711)
        • PASSED [ 12%]
      • 0 ms
        passed(CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712)
        • PASSED [ 12%]
      • 0 ms
        passed(COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected713)
        • PASSED [ 12%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected714)
        • PASSED [ 12%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1-expected715)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1-expected716)
        • PASSED [ 12%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1-expected717)
        • PASSED [ 12%]
      • 0 ms
        passed(O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12-expected718)
        • PASSED [ 12%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CS/C=C\\C#N)[C@H]2SC1-expected719)
        • PASSED [ 12%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1-expected720)
        • PASSED [ 12%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@H]12)c1csc(N)n1-expected721)
        • PASSED [ 12%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSCC#N)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected722)
        • PASSED [ 12%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected723)
        • PASSED [ 12%]
      • 0 ms
        passed(CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1-expected724)
        • PASSED [ 12%]
      • 0 ms
        passed(O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12-expected725)
        • PASSED [ 12%]
      • 0 ms
        passed(NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12-expected726)
        • PASSED [ 12%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected727)
        • PASSED [ 12%]
      • 0 ms
        passed(CN(C)CCn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3csc(N)n3)[C@H]2SC1-expected728)
        • PASSED [ 12%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729)
        • PASSED [ 12%]
      • 0 ms
        passed(Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1-expected730)
        • PASSED [ 12%]
      • 0 ms
        passed(COCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)/C(=N\\OC)c3csc(N)n3)[C@H]2SC1_[Na+]-expected731)
        • PASSED [ 12%]
      • 0 ms
        passed(C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1_O-expected732)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)[C@H]2SC1-expected733)
        • PASSED [ 12%]
      • 0 ms
        passed(COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1-expected734)
        • PASSED [ 12%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1-expected735)
        • PASSED [ 12%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cn3nnc(C)n3)CS[C@H]12)c1csc(N)n1-expected736)
        • PASSED [ 13%]
      • 0 ms
        passed(O=C(Cn1cnnn1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nncs3)CS[C@H]12-expected737)
        • PASSED [ 13%]
      • 0 ms
        passed(Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1_O_O-expected738)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(/C=C/Sc3n[nH]c(=O)c(=O)n3CC=O)CS[C@H]12)c1csc(N)n1-expected740)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1-expected742)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected744)
        • PASSED [ 13%]
      • 0 ms
        passed(COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12-expected745)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1-expected746)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1_[Na+]-expected747)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1_O_O-expected748)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)C1=C(O)[C@@]2(O)C(=O)c3c(c(C)c4ccc(C)c(O)c4c3O)C[C@H]2[C@@H](N)C1=O-expected751)
        • PASSED [ 13%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(OC)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected752)
        • PASSED [ 13%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](O)[C@@H](O)[C@H]2O)N(C)C1-expected753)
        • PASSED [ 13%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1-expected754)
        • PASSED [ 13%]
      • 0 ms
        passed(COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1-expected755)
        • PASSED [ 13%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected756)
        • PASSED [ 13%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O-expected757)
        • PASSED [ 13%]
      • 1 ms
        passed(CC=CCC(C)C(O)C1C(=O)NC(CC)C(=O)N(C)CC(=O)N(C)C(CC(C)C)C(=O)NC(C(C)C)C(=O)N(C)C(CC(C)C)C(=O)NC(C)C(=O)NC(C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(C(C)C)C(=O)N1C-expected758)
        • PASSED [ 13%]
      • 1 ms
        passed(Cc1c2oc3c(C)ccc(C(=O)NC4C(=O)NC(C(C)C)C(=O)N5CCCC5C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC4C)c3nc-2c(C(=O)NC2C(=O)NC(C(C)C)C(=O)N3CCCC3C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC2C)c(N)c1=O-expected759)
        • PASSED [ 13%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760)
        • PASSED [ 13%]
      • 0 ms
        passed(CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O-expected761)
        • PASSED [ 13%]
      • 0 ms
        passed(NCC1CCC(N)C(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)O1-expected762)
        • PASSED [ 13%]
      • 0 ms
        passed(Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected763)
        • PASSED [ 13%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@@H]3[C@@H](O)[C@H](O)[C@@H](N=C(N)N)[C@H](O)[C@H]3N=C(N)N)O[C@@H](C)[C@]2(O)CO)O[C@@H](CO)[C@H](O)[C@H]1O-expected764)
        • PASSED [ 13%]
      • 0 ms
        passed(COc1ccc(-c2cc(=O)c3c(O)cc(O[C@@H]4O[C@H](CO[C@@H]5O[C@@H](C)[C@H](O)[C@@H](O)[C@H]5O)[C@@H](O)[C@H](O)[C@H]4O)cc3o2)cc1O-expected765)
        • PASSED [ 13%]
      • 0 ms
        passed(CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1-expected766)
        • PASSED [ 13%]
      • 1 ms
        passed(CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC-expected767)
        • PASSED [ 13%]
      • 1 ms
        passed(OCCN(CCO)c1nc(N2CCCCC2)c2nc(N(CCO)CCO)nc(N3CCCCC3)c2n1-expected768)
        • PASSED [ 13%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)[C@@H]2N[C@@H](COCCOC)O[C@H]([C@H]2C)[C@]1(C)O-expected769)
        • PASSED [ 13%]
      • 1 ms
        passed(CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C-expected770)
        • PASSED [ 13%]
      • 1 ms
        passed(C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C-expected771)
        • PASSED [ 13%]
      • 0 ms
        passed(CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21_[Cl]-expected772)
        • PASSED [ 13%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O-expected773)
        • PASSED [ 13%]
      • 3 ms
        passed(CCC(C)[C@H]1O[C@]2(CC[C@@H]1C)CC1C[C@@H](C/C=C(\\C)[C@@H](O[C@H]3C[C@H](OC)[C@@H](OC4C[C@H](OC)[C@@H](O)[C@H](C)O4)[C@H](C)O3)[C@@H](C)/C=C/C=C3\\CO[C@@H]4[C@H](O)C(C)=C[C@@H](C(=O)O1)[C@]34O)O2_CO[C@H]1CC(O[C@H]2[C@H](C)O[C@@H](O[C@@H]3/C(C)=C/C[C@@H]4CC(C[C@]5(CC[C@H](C)[C@@H](C(C)C)O5)O4)OC(=O)[C@@H]4C=C(C)[C@@H](O)[C@H]5OC/C(=C\\C=C\\[C@@H]3C)[C@]54O)C[C@@H]2OC)O[C@@H](C)[C@@H]1O-expected774)
        • PASSED [ 13%]
      • 1 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@](O)(C(=O)CO)C[C@H]3OC1CC(N)CC(C)O1-expected775)
        • PASSED [ 13%]
      • 1 ms
        passed(CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O-expected776)
        • PASSED [ 13%]
      • 0 ms
        passed(CCNCC(O)c1cccc(O)c1-expected777)
        • PASSED [ 13%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl-expected778)
        • PASSED [ 13%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected779)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(C)c1ccccc1OCC1=NCCN1-expected780)
        • PASSED [ 13%]
      • 1 ms
        passed(CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected781)
        • PASSED [ 13%]
      • 1 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1-expected782)
        • PASSED [ 13%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21_[Na]-expected783)
        • PASSED [ 13%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected784)
        • PASSED [ 13%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12-expected785)
        • PASSED [ 13%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected786)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787)
        • PASSED [ 13%]
      • 0 ms
        passed(CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788)
        • PASSED [ 13%]
      • 0 ms
        passed(CNC(C)C1CCC(N)C(OC2C(N)CC(N)C(OC3OCC(C)(O)C(NC)C3O)C2O)O1-expected789)
        • PASSED [ 13%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1-expected790)
        • PASSED [ 13%]
      • 1 ms
        passed(CC(C)CC1NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC(=O)C(CC(C)C)NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC1=O-expected791)
        • PASSED [ 13%]
      • 0 ms
        passed(Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1-expected792)
        • PASSED [ 14%]
      • 1 ms
        passed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected794)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(Cc1ccccc1)NO-expected795)
        • PASSED [ 14%]
      • 0 ms
        passed(CNC(C)C(O)c1ccc(O)cc1-expected796)
        • PASSED [ 14%]
      • 0 ms
        passed(Cc1cc(=O)oc2cc(O)ccc12-expected797)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2[C@@H](O[C@H]2C[C@H](N)[C@H](O)[C@H](C)O2)C1)C(=O)c1ccccc1C3=O-expected798)
        • PASSED [ 14%]
      • 0 ms
        passed(C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12_O-expected799)
        • PASSED [ 14%]
      • 0 ms
        passed(CNC1C(O)C(OC2C(NC(=O)C(O)CN)CC(N)C(OC3OC(CN)C(O)C(O)C3O)C2O)OCC1(C)O-expected800)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected801)
        • PASSED [ 14%]
      • 0 ms
        passed(CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O-expected802)
        • PASSED [ 14%]
      • 0 ms
        passed(Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected803)
        • PASSED [ 14%]
      • 0 ms
        passed(CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1-expected804)
        • PASSED [ 14%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](NC(=O)[C@@H](N)CC(C)C)[C@H](O)[C@H](C)O1-expected805)
        • PASSED [ 14%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)/C(=N\\OC)[C@H](C)[C@@H](O)[C@]1(C)O-expected806)
        • PASSED [ 14%]
      • 0 ms
        passed(CCCC1CC(C(=O)NC(C(C)O)C2OC(SC)C(O)C(O)C2O)N(C)C1-expected807)
        • PASSED [ 14%]
      • 0 ms
        passed(N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1_O-expected808)
        • PASSED [ 14%]
      • 0 ms
        passed(CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1-expected809)
        • PASSED [ 14%]
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected810)
        • PASSED [ 14%]
        • [14:08:08] WARNING: not removing hydrogen atom without neighbors
          [14:08:08] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O-expected811)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(CN(C)C)OC(C)(c1ccccc1)c1ccc(Cl)cc1-expected812)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1OC(OC2CC(O)(C(=O)CO)Cc3c(O)c4c(c(O)c32)C(=O)c2ccccc2C4=O)CC(N)C1O-expected813)
        • PASSED [ 14%]
      • 0 ms
        passed(C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12_O_O_O-expected814)
        • PASSED [ 14%]
      • 0 ms
        passed(C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1-expected815)
        • PASSED [ 14%]
      • 0 ms
        passed(C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816)
        • PASSED [ 14%]
      • 0 ms
        passed(CNC(C)C(=O)c1ccc(OC)cc1-expected817)
        • PASSED [ 14%]
      • 0 ms
        passed(COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected818)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected819)
        • PASSED [ 14%]
      • 0 ms
        passed(COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820)
        • PASSED [ 14%]
      • 0 ms
        passed(CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC-expected821)
        • PASSED [ 14%]
      • 1 ms
        passed(CCC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected822)
        • PASSED [ 14%]
      • 0 ms
        passed(CCCCCC1CNC(C(=O)NC(C(C)Cl)C2OC(SC)C(O)C(O)C2O)C1-expected823)
        • PASSED [ 14%]
      • 0 ms
        passed(CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12-expected824)
        • PASSED [ 14%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21-expected825)
        • PASSED [ 14%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O)[C@H](N)C[C@@H]2N)[C@H](N)[C@@H](O)[C@@H]1O-expected826)
        • PASSED [ 14%]
      • 0 ms
        passed(CCN[C@@H]1C[C@H](N)[C@@H](O[C@H]2OC(CN)=CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1OC[C@](C)(O)[C@H](NC)[C@H]1O-expected827)
        • PASSED [ 14%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1-expected828)
        • PASSED [ 14%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]-expected829)
        • PASSED [ 14%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1-expected830)
        • PASSED [ 14%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12-expected831)
        • PASSED [ 14%]
      • 1 ms
        passed(CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C-expected832)
        • PASSED [ 14%]
      • 1 ms
        passed(COC1CC(O[C@H]2[C@H](C)[C@@H](OC3OC(C)CC(N(C)C)C3O)[C@@H](C)C[C@]3(CO3)C(=O)[C@H](C)[C@@H](O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)OC(C)C1O-expected833)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected834)
        • PASSED [ 14%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1-expected835)
        • PASSED [ 14%]
      • 1 ms
        passed(CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O-expected836)
        • PASSED [ 14%]
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC(C(=O)O)C2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected837)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C-expected838)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O_[Na]-expected839)
        • PASSED [ 14%]
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCNC(C(=O)NC2C(=O)N3C2SC(C)(C)C3C(=O)O)c2ccccc2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected840)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected841)
        • PASSED [ 14%]
      • 1 ms
        passed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected842)
        • PASSED [ 14%]
      • 1 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O[C@H]2CCCCO2)[C@H](C)O1-expected843)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844)
        • PASSED [ 14%]
      • 1 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]-expected845)
        • PASSED [ 14%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected846)
        • PASSED [ 14%]
      • 0 ms
        passed(CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected847)
        • PASSED [ 14%]
      • 0 ms
        passed(CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1-expected848)
        • PASSED [ 14%]
      • 0 ms
        passed(Cc1cnn(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected849)
        • PASSED [ 15%]
      • 1 ms
        passed(CC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected850)
        • PASSED [ 15%]
      • 0 ms
        passed(CCCNCC(O)COc1ccccc1C(=O)CCc1ccccc1-expected851)
        • PASSED [ 15%]
      • 0 ms
        passed(CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected852)
        • PASSED [ 15%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(NC(CO)CO)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected853)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O-expected854)
        • PASSED [ 15%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O-expected855)
        • PASSED [ 15%]
      • 1 ms
        passed(CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4-expected856)
        • PASSED [ 15%]
      • 1 ms
        passed(CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4-expected857)
        • PASSED [ 15%]
      • 1 ms
        passed(CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4-expected858)
        • PASSED [ 15%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected859)
        • PASSED [ 15%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected860)
        • PASSED [ 15%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861)
        • PASSED [ 15%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12_[Na+]-expected862)
        • PASSED [ 15%]
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](O[C@H]2C[C@H](N(C)C)[C@H](O[C@H]3C[C@@H]4O[C@H]5CC(=O)[C@H](C)O[C@H]5O[C@@H]4[C@H](C)O3)[C@H](C)O2)c2c(O)c3c(c(O)c2[C@H]1O[C@H]1C[C@H](N(C)C)[C@H](O)[C@H](C)O1)C(=O)c1cccc(O)c1C3=O-expected863)
        • PASSED [ 15%]
      • 1 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected864)
        • PASSED [ 15%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)/C(=N/OCOCCOC)[C@H](C)[C@@H](O)[C@]1(C)O-expected865)
        • PASSED [ 15%]
      • 0 ms
        passed(COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21-expected866)
        • PASSED [ 15%]
      • 0 ms
        passed(COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C-expected867)
        • PASSED [ 15%]
      • 0 ms
        passed(COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C-expected868)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O-expected869)
        • PASSED [ 15%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O)[C@@H](O[C@@H]2[C@@H](O)[C@H](O[C@H]3OC(CN)=CC[C@H]3N)[C@@H](N)C[C@H]2N)OC[C@]1(C)O-expected870)
        • PASSED [ 15%]
      • 0 ms
        passed(COC1C(O)CC(=O)OC(C)C/C=C/C=C/C(OC2CCC(N(C)C)C(C)O2)C(C)CC(CC=O)C1OC1OC(C)C(OC2CC(C)(O)C(O)C(C)O2)C(N(C)C)C1O-expected871)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O-expected872)
        • PASSED [ 15%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12-expected873)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O_CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected874)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected875)
        • PASSED [ 15%]
      • 0 ms
        passed(C=CC[C@@H]1/C=C(\\C)C[C@H](C)C[C@H](OC)[C@H]2O[C@@](O)(C(=O)C(=O)N3CCCC[C@H]3C(=O)O[C@H](/C(C)=C/[C@@H]3CC[C@@H](O)[C@H](OC)C3)[C@H](C)[C@@H](O)CC1=O)[C@H](C)C[C@@H]2OC-expected876)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21-expected877)
        • PASSED [ 15%]
      • 0 ms
        passed(C[C@]1(Cn2ccnn2)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected878)
        • PASSED [ 15%]
      • 2 ms
        passed(CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(=O)[C@H](NC(=O)[C@@H]4NC(=O)[C@H]4NC(=O)[C@@H](Cc5ccc(c(Cl)c5)O3)NC(=O)[C@H](N)c3ccc(O)c(c3)Oc3cc(O)cc4c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O-expected879)
        • PASSED [ 15%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21-expected880)
        • PASSED [ 15%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O-expected881)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O-expected882)
        • PASSED [ 15%]
      • 0 ms
        passed(CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O-expected883)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1-expected884)
        • PASSED [ 15%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O[C@H]3O[C@H](CO)[C@@H](O)[C@H](N)[C@H]3O)[C@H](N)C[C@@H]2N)[C@H](N)C[C@@H]1O-expected885)
        • PASSED [ 15%]
      • 0 ms
        passed(Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1-expected886)
        • PASSED [ 15%]
      • 1 ms
        passed(CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O-expected887)
        • PASSED [ 15%]
      • 0 ms
        passed(CCCC[C@@H]1CC(=O)[C@]2(O)O[C@@H]3[C@@H](NC)[C@@H](O)[C@@H](NC)[C@H](O)[C@H]3O[C@@H]2O1-expected888)
        • PASSED [ 15%]
      • 0 ms
        passed(Cc1ccc(C(C)C)c(OCC2=NCCN2)c1-expected889)
        • PASSED [ 15%]
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected890)
        • PASSED [ 15%]
      • 0 ms
        passed([C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]-expected891)
        • PASSED [ 15%]
      • 0 ms
        passed(FC(F)(Cl)C(F)(F)Cl-expected892)
        • PASSED [ 15%]
      • 0 ms
        passed(C[C@H]1CCCC[C@@]1(c1cccs1)N1CCCCC1-expected893)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C_[Cl-]_[H+]-expected894)
        • PASSED [ 15%]
        • [14:08:09] WARNING: not removing hydrogen atom without neighbors
          [14:08:09] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CC(=O)NCCCN1CCN(c2cc(Cl)ccc2Cl)CC1-expected895)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12-expected896)
        • PASSED [ 15%]
      • 0 ms
        passed(CCC(Br)(CC)C(=O)NC(=O)NC(C)=O-expected897)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected898)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)NC(CCC(N)=O)C(=O)O-expected899)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected900)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1-expected901)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected902)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected903)
        • PASSED [ 15%]
      • 0 ms
        passed(CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1-expected904)
        • PASSED [ 15%]
      • 0 ms
        passed(CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5-expected905)
        • PASSED [ 15%]
      • 0 ms
        passed(CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected906)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1-expected907)
        • PASSED [ 16%]
      • 1 ms
        passed(C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1-expected908)
        • PASSED [ 16%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected909)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2-expected910)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C(NCCN1CCN(c2ncccn2)CC1)C12CC3CC(CC(C3)C1)C2-expected911)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1-expected912)
        • PASSED [ 16%]
      • 0 ms
        passed(CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl-expected913)
        • PASSED [ 16%]
      • 0 ms
        passed(CCCN(CCC)C1Cc2cccc3cc(O)cc(c23)C1-expected914)
        • PASSED [ 16%]
      • 0 ms
        passed(CC12CC(=O)[C@H]3C(CC[C@H]4C[C@H](O)CCC43C)[C@@H]1CCC2C(=O)CO-expected915)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@H](O)CC[C@]4(C)[C@H]3C(=O)C[C@]12C-expected916)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)C12OC(C)(C)OC1CC1C3CCC4=CC(=O)CCC4(C)C3CCC12C-expected917)
        • PASSED [ 16%]
      • 0 ms
        passed(COC1(F)C(F)(F)C1(F)Cl-expected918)
        • PASSED [ 16%]
      • 0 ms
        passed(C=CCN1CCC23c4c5ccc(O)c4OC2C2(OC)C=CC3(CC2[C@](C)(O)CCC)C1C5-expected919)
        • PASSED [ 16%]
      • 0 ms
        passed(C=CCN1C(=O)OC(C)C1=O-expected920)
        • PASSED [ 16%]
      • 0 ms
        passed(CNC[C@@H]1CN(c2ccc(OCc3cccc(Cl)c3)cc2)C(=O)O1-expected921)
        • PASSED [ 16%]
      • 0 ms
        passed(CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1_[Cl-]_[H+]-expected922)
        • PASSED [ 16%]
        • [14:08:09] WARNING: not removing hydrogen atom without neighbors
          [14:08:09] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C1CCC2(CCC(=O)c3ccccc32)C(=O)N1-expected923)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)NCCn1c(C)cc(C=O)c1C-expected924)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F-expected925)
        • PASSED [ 16%]
      • 0 ms
        passed(CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC-expected926)
        • PASSED [ 16%]
      • 0 ms
        passed(CC[C@@H](O)C(C[C@@H](C)N(C)C)(c1ccccc1)c1ccccc1-expected927)
        • PASSED [ 16%]
      • 0 ms
        passed(C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC-expected928)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O-expected929)
        • PASSED [ 16%]
      • 0 ms
        passed(CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1-expected930)
        • PASSED [ 16%]
      • 1 ms
        passed(CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO-expected931)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932)
        • PASSED [ 16%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933)
        • PASSED [ 16%]
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)c1ccc(N)cc1-expected934)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2-expected935)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(Cc1ccccc1)NC(C#N)c1ccccc1-expected936)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21_[Cl-]-expected937)
        • PASSED [ 16%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)CC)c(N)cc1OC-expected938)
        • PASSED [ 16%]
      • 0 ms
        passed(C[N+](C)([O-])CCC=C1c2ccccc2CCc2ccccc21-expected939)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(C)CCOC(CN1CCCC1)c1ccccc1-expected940)
        • PASSED [ 16%]
      • 0 ms
        passed(CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected941)
        • PASSED [ 16%]
      • 0 ms
        passed(Nc1cccc(-n2ccccc2=O)c1-expected942)
        • PASSED [ 16%]
      • 0 ms
        passed(CN(C)c1cnccn1-expected943)
        • PASSED [ 16%]
      • 0 ms
        passed(CCC(C)(C)O-expected944)
        • PASSED [ 16%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1-expected945)
        • PASSED [ 16%]
      • 0 ms
        passed(COc1ccc(C(=O)N2CCCC2=O)cc1-expected946)
        • PASSED [ 16%]
      • 0 ms
        passed(COc1cc2oc(=O)c(C)c(C)c2cc1OCCCN1CCN(c2ccccc2OC)CC1-expected947)
        • PASSED [ 16%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@H](C)CN1CCCC1)c1ccccc1S2-expected948)
        • PASSED [ 16%]
      • 0 ms
        passed(C=CCC1(C(C)C)C(=O)NC(=O)NC1=O-expected949)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C1CCc2ccc(OCCCCN3CCN(c4cccc(Cl)c4Cl)CC3)cc2N1-expected950)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C1C(O)=C(O)OC1C(O)CO-expected951)
        • PASSED [ 16%]
      • 0 ms
        passed(CC(=O)Oc1ccccc1C(=O)O-expected952)
        • PASSED [ 16%]
      • 0 ms
        passed(CCN(CC)c1ccc(NC(=O)c2ccccc2N)c(C)c1-expected953)
        • PASSED [ 16%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2-expected954)
        • PASSED [ 16%]
      • 0 ms
        passed(C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected955)
        • PASSED [ 16%]
      • 0 ms
        passed(CN(C(=O)CNC(=O)[C@@H](N)CCCCN)c1ccc(Cl)cc1C(=O)c1ccccc1-expected956)
        • PASSED [ 16%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1-expected957)
        • PASSED [ 16%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1-expected958)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1-expected959)
        • PASSED [ 16%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CCNCC1-expected960)
        • PASSED [ 16%]
      • 0 ms
        passed(O=C1NCCN1C1CCN(CCC2COc3ccccc3O2)CC1-expected961)
        • PASSED [ 16%]
      • 0 ms
        passed(c1ccc2c(c1)CCN1CCNCC21-expected962)
        • PASSED [ 17%]
      • 0 ms
        passed(c1ccc2c(c1)cc1n2CCCNC1-expected963)
        • PASSED [ 17%]
      • 0 ms
        passed(CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1-expected964)
        • PASSED [ 17%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCN1C[C@H]2C[C@H](c3ccc(F)cc3)[C@H]2C1-expected965)
        • PASSED [ 17%]
      • 0 ms
        passed(CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C-expected966)
        • PASSED [ 17%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)NC1=O-expected967)
        • PASSED [ 17%]
      • 0 ms
        passed(Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C(CCCl)NCc1ccccc1-expected969)
        • PASSED [ 17%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected970)
        • PASSED [ 17%]
      • 0 ms
        passed(COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1-expected971)
        • PASSED [ 17%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC(=O)C1-expected972)
        • PASSED [ 17%]
      • 0 ms
        passed(C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected973)
        • PASSED [ 17%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1-expected974)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C1CNC(c2ccccc2)=c2c3c(sc2=N1)CCCC3-expected975)
        • PASSED [ 17%]
      • 0 ms
        passed(C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected976)
        • PASSED [ 17%]
      • 0 ms
        passed(C[N+](C)([O-])CC/C=C1/c2ccccc2C=Cc2c(Cl)cccc21-expected977)
        • PASSED [ 17%]
      • 0 ms
        passed([Cl]_c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978)
        • PASSED [ 17%]
      • 0 ms
        passed(OCc1ccccc1-expected979)
        • PASSED [ 17%]
      • 0 ms
        passed(CN1CCc2cc(Cl)c(O)cc2[C@@H](c2cc(Br)cc3c2OCC3)C1-expected980)
        • PASSED [ 17%]
      • 1 ms
        passed(CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981)
        • PASSED [ 17%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C1CC2(CCCC2)CC(=O)N1CCNCC1COc2ccccc2O1-expected984)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C(O)CCCCC1SCC2NC(=O)NC21-expected985)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C1C[C@H]2SC(C3(O)CN4C(=O)C[C@H]4S3)CN12-expected986)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1-expected987)
        • PASSED [ 17%]
      • 1 ms
        passed(C/C(=C(/CCOC(=O)c1ccccc1)SS/C(CCOC(=O)c1ccccc1)=C(\\C)N(C=O)Cc1cnc(C)nc1N)N(C=O)Cc1cnc(C)nc1N-expected988)
        • PASSED [ 17%]
      • 0 ms
        passed(CC(=O)NCCC[C@H](NC(C)=O)C(=O)O-expected989)
        • PASSED [ 17%]
      • 0 ms
        passed(CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1-expected990)
        • PASSED [ 17%]
      • 1 ms
        passed(CC[C@]12CCN(CC3(O)CC3)[C@H](Cc3ccc(O)cc31)C2(C)C-expected991)
        • PASSED [ 17%]
      • 0 ms
        passed(CC1(C)OC(=O)Nc2ccc(Br)cc21-expected992)
        • PASSED [ 17%]
      • 0 ms
        passed(CC(C)C(Br)C(=O)NC(N)=O-expected993)
        • PASSED [ 17%]
      • 0 ms
        passed(BrC(Br)Br-expected994)
        • PASSED [ 17%]
      • 0 ms
        passed(Cc1cc(Br)cc(C(N)=O)c1O-expected995)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C1CC(c2cccc(Br)c2)C(=O)N1-expected996)
        • PASSED [ 17%]
      • 0 ms
        passed(Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2-expected997)
        • PASSED [ 17%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1-expected998)
        • PASSED [ 17%]
      • 1 ms
        passed(CC(=O)Nc1ccc(OC(C)(C)C)cc1-expected999)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCC(=O)c1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected1000)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCCC(CC)CNC(=O)CC(C)O-expected1001)
        • PASSED [ 17%]
      • 1 ms
        passed(Oc1ccc2c(c1)[C@@]13CCCC[C@@]1(O)[C@@H](C2)N(CC1CCC1)CC3-expected1002)
        • PASSED [ 17%]
      • 0 ms
        passed(C=CCN1C[C@H](C(=O)N(CCCN(C)C)C(=O)NCC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected1003)
        • PASSED [ 17%]
      • 0 ms
        passed(CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1-expected1004)
        • PASSED [ 17%]
      • 0 ms
        passed(CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O-expected1005)
        • PASSED [ 17%]
      • 0 ms
        passed(CC12CCC(CC1=O)C2(C)C-expected1006)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCCC/C(=N/OCCN)c1ccc(C)c(N)c1-expected1007)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCCSc1ccc(C(SCCN(C)C)c2ccccc2)cc1-expected1008)
        • PASSED [ 17%]
      • 0 ms
        passed(CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O-expected1009)
        • PASSED [ 17%]
      • 0 ms
        passed(CN1C(=O)CN(C(N)=O)C(c2ccccc2)c2cc(Cl)ccc21-expected1010)
        • PASSED [ 17%]
      • 0 ms
        passed(C#CC(OC(N)=O)c1ccccc1-expected1011)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2-expected1012)
        • PASSED [ 17%]
      • 0 ms
        passed(NC(=O)CN1Cc2ccccc2OC1=O-expected1013)
        • PASSED [ 17%]
      • 0 ms
        passed(CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014)
        • PASSED [ 17%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected1015)
        • PASSED [ 17%]
      • 0 ms
        passed(NS(=O)(=O)c1ccc(C(=O)O)cc1-expected1016)
        • PASSED [ 17%]
      • 0 ms
        passed(C[C@H](N)C(=O)c1ccccc1-expected1017)
        • PASSED [ 17%]
      • 0 ms
        passed(O=C1CN(C(=O)CN2CC(c3ccc(Cl)cc3)CC2=O)CCN1-expected1018)
        • PASSED [ 17%]
      • 1 ms
        passed(OC1OC(COCCOC(O)C(Cl)(Cl)Cl)C(OC2OC(COCCOCCOC(O)C(Cl)(Cl)Cl)CC(OC(O)C(Cl)(Cl)Cl)C2O)C(OCCOCCOC(O)C(Cl)(Cl)Cl)C1O-expected1019)
        • PASSED [ 18%]
      • 0 ms
        passed(COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1-expected1020)
        • PASSED [ 18%]
      • 0 ms
        passed(Cc1cc(C)c(=O)[nH]n1-expected1021)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(=O)c1ccc(C(O)C(CO)NC(=O)C(Cl)Cl)cc1-expected1022)
        • PASSED [ 18%]
      • 0 ms
        passed(CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N-expected1023)
        • PASSED [ 18%]
      • 0 ms
        passed(OC[C@@H](O)[C@H]1OC2O[C@H](C(Cl)(Cl)Cl)O[C@@H]2[C@H]1O-expected1024)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(CC(C)(C)O)OC(O)C(Cl)(Cl)Cl-expected1025)
        • PASSED [ 18%]
      • 0 ms
        passed(CN1C(=O)CCS(=O)(=O)C1c1ccc(Cl)cc1-expected1026)
        • PASSED [ 18%]
      • 0 ms
        passed(ClC(Cl)Cl-expected1027)
        • PASSED [ 18%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2o1-expected1028)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C-expected1029)
        • PASSED [ 18%]
      • 0 ms
        passed(Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21-expected1030)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(C)N[C@H]1C2CCC(CC2)[C@]1(O)c1ccc(Cl)c(Cl)c1-expected1032)
        • PASSED [ 18%]
      • 0 ms
        passed(NNCC1CCCCC1-expected1033)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(C)C(O)C1CCCCC1-expected1034)
        • PASSED [ 18%]
      • 0 ms
        passed(COCC1CN(c2ccc(OCc3cccc(C#N)c3)cc2)C(=O)O1-expected1035)
        • PASSED [ 18%]
      • 0 ms
        passed(COc1cc(/C=C/C(=O)N2CCCCCCC2)cc(OC)c1OC-expected1036)
        • PASSED [ 18%]
      • 0 ms
        passed(N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1037)
        • PASSED [ 18%]
      • 0 ms
        passed(CN(C(=O)CNC1CC1)c1ccc(Cl)cc1C(=O)c1ccccc1Cl-expected1038)
        • PASSED [ 18%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039)
        • PASSED [ 18%]
      • 0 ms
        passed(CN1CCC2=C(CC1)c1cc(C#N)ccc1Sc1ccccc12-expected1040)
        • PASSED [ 18%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(Cc2ccccc2)CC1-expected1041)
        • PASSED [ 18%]
      • 0 ms
        passed(Clc1cccc(Cl)c1NC1=NCCO1-expected1042)
        • PASSED [ 18%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1043)
        • PASSED [ 18%]
      • 0 ms
        passed(CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044)
        • PASSED [ 18%]
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCN2c3ccccc3CCc3ccc(Cl)cc32)CC1-expected1045)
        • PASSED [ 18%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO-expected1046)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047)
        • PASSED [ 18%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048)
        • PASSED [ 18%]
      • 0 ms
        passed(CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21-expected1049)
        • PASSED [ 18%]
      • 0 ms
        passed(CCN(CC)CCOC1(c2ccc(Cl)cc2)CCCCC1-expected1050)
        • PASSED [ 18%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected1051)
        • PASSED [ 18%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1052)
        • PASSED [ 18%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1-expected1053)
        • PASSED [ 18%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1C(Cl)=C[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected1054)
        • PASSED [ 18%]
      • 0 ms
        passed(O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl-expected1055)
        • PASSED [ 18%]
      • 0 ms
        passed(C#CCN(C)CCCOc1ccc(Cl)cc1Cl-expected1056)
        • PASSED [ 18%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected1057)
        • PASSED [ 18%]
      • 0 ms
        passed(CN1CCN(C2Cc3ccccc3Sc3ccc(Cl)cc32)CC1-expected1058)
        • PASSED [ 18%]
      • 0 ms
        passed(CCc1cc2c(s1)N(C)C(=O)CN=C2c1ccccc1Cl-expected1059)
        • PASSED [ 18%]
      • 1 ms
        passed(CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060)
        • PASSED [ 18%]
      • 1 ms
        passed(CNC(=O)CCN1CCN(CCC=C2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1061)
        • PASSED [ 18%]
      • 0 ms
        passed(CCC12CCN(CC3CCC3)C(Cc3ccc(O)cc31)C2(C)C-expected1062)
        • PASSED [ 18%]
      • 0 ms
        passed(CC[C@H]1CC(=O)[C@@H]2Oc3c(OC)ccc4c3[C@@]23CCN(CC2CC2)C(C4)[C@H]13-expected1063)
        • PASSED [ 18%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(O)C(=O)CO-expected1064)
        • PASSED [ 18%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C-expected1065)
        • PASSED [ 18%]
      • 1 ms
        passed(CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12-expected1066)
        • PASSED [ 18%]
      • 1 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067)
        • PASSED [ 18%]
      • 0 ms
        passed(CN1C(=O)CCC1c1cccnc1-expected1068)
        • PASSED [ 18%]
      • 0 ms
        passed(CN(C)CC(=O)C=C1c2ccccc2CCc2ccccc21-expected1069)
        • PASSED [ 18%]
      • 0 ms
        passed(CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1-expected1070)
        • PASSED [ 18%]
      • 0 ms
        passed(C/C=C/C(=O)N(CC)C(CC)C(=O)N(C)C-expected1071)
        • PASSED [ 18%]
      • 0 ms
        passed(O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1-expected1072)
        • PASSED [ 18%]
      • 0 ms
        passed(CN(C)C1CCc2[nH]c3ccccc3c2C1-expected1073)
        • PASSED [ 18%]
      • 0 ms
        passed(CCC1(C2=CCCCC2)C(=O)NC(=O)NC1=O-expected1074)
        • PASSED [ 18%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C=Cc2ccccc21-expected1075)
        • PASSED [ 18%]
      • 1 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@@H](O)C45CC4CC[C@]5(C)[C@H]3CC[C@]12C-expected1076)
        • PASSED [ 19%]
      • 0 ms
        passed(C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N-expected1077)
        • PASSED [ 19%]
      • 0 ms
        passed(NC(=O)C1c2ccccc2CCc2ccccc21-expected1078)
        • PASSED [ 19%]
      • 1 ms
        passed(COC12C=CC3(CC1C(C)(C)O)[C@@H]1Cc4ccc(O)c5c4[C@]3(CCN1CC1CC1)[C@@H]2O5-expected1079)
        • PASSED [ 19%]
      • 0 ms
        passed(CN(C)CCOC(=O)CCC1CCCCC1-expected1080)
        • PASSED [ 19%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CC1c1ccncc1-expected1081)
        • PASSED [ 19%]
      • 0 ms
        passed(O=C1NC(=O)C2(c3ccc(Cl)cc3)CC12-expected1082)
        • PASSED [ 19%]
      • 0 ms
        passed(CN(C)CC(=O)N1c2ccccc2Sc2ccccc21-expected1083)
        • PASSED [ 19%]
      • 0 ms
        passed(OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1-expected1084)
        • PASSED [ 19%]
      • 0 ms
        passed(CCCCCCCCCCOc1c(OC)cc(C(N)=O)cc1OC-expected1085)
        • PASSED [ 19%]
      • 0 ms
        passed(Cc1ccc(Cc2ccccc2)c(N2CCNCC2)c1-expected1086)
        • PASSED [ 19%]
      • 0 ms
        passed(O=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected1087)
        • PASSED [ 19%]
      • 0 ms
        passed(CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O-expected1088)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)C1(O)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1089)
        • PASSED [ 19%]
      • 0 ms
        passed(Nc1ncc2ncn(COCCO)c2n1-expected1090)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1091)
        • PASSED [ 19%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@H]4C(O)CC3(C)[C@]2(C(=O)CO)O1-expected1092)
        • PASSED [ 19%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO-expected1093)
        • PASSED [ 19%]
      • 0 ms
        passed(Cc1cccc(Cc2cnc[nH]2)c1C-expected1094)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095)
        • PASSED [ 19%]
      • 0 ms
        passed(c1ccc([C@@H]2CN3CCSC3=N2)cc1-expected1096)
        • PASSED [ 19%]
      • 0 ms
        passed(c1ccc(C2CN=C3NCCN32)cc1-expected1097)
        • PASSED [ 19%]
      • 0 ms
        passed(c1ccc(C2(c3ccccc3)OC[C@H]([C@@H]3CCCCN3)O2)cc1-expected1098)
        • PASSED [ 19%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CC[C@](O)(C(=O)CO)C3(C)CC(Cl)[C@@]12Cl-expected1099)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C-expected1100)
        • PASSED [ 19%]
      • 0 ms
        passed(CCN(CC)CCNC(=O)c1cc(Cl)cc(Cl)c1OC-expected1101)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2-expected1102)
        • PASSED [ 19%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1103)
        • PASSED [ 19%]
      • 0 ms
        passed(Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1-expected1104)
        • PASSED [ 19%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO-expected1105)
        • PASSED [ 19%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106)
        • PASSED [ 19%]
      • 0 ms
        passed(CN1CCC(C)(CN2c3ccccc3Sc3ccccc32)C1-expected1107)
        • PASSED [ 19%]
      • 0 ms
        passed(CC1(C)OC(=O)NC1=O-expected1108)
        • PASSED [ 19%]
      • 0 ms
        passed(CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1109)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(Cc1ccccc1)N(C)C-expected1110)
        • PASSED [ 19%]
      • 0 ms
        passed(O=C1CN2C(=O)CCC2N1-expected1111)
        • PASSED [ 19%]
      • 0 ms
        passed(CCCCCCCCCC1(C)OCC(COC(N)=O)O1-expected1112)
        • PASSED [ 19%]
      • 0 ms
        passed(CC(=O)NNC(=O)CC(O)(c1ccccc1)c1ccccc1-expected1113)
        • PASSED [ 19%]
      • 0 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1C(C)(C)O)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected1114)
        • PASSED [ 19%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C-expected1115)
        • PASSED [ 19%]
      • 0 ms
        passed(CC12NC(Cc3ccccc31)c1ccccc12-expected1116)
        • PASSED [ 19%]
      • 0 ms
        passed(CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1117)
        • PASSED [ 19%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2_[Cl-]_[H+]-expected1118)
        • PASSED [ 19%]
        • [14:08:09] WARNING: not removing hydrogen atom without neighbors
          [14:08:09] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C(NCCc1ccc(O)c(O)c1)C12CC3CC(CC(C3)C1)C2-expected1119)
        • PASSED [ 19%]
      • 0 ms
        passed(CCN1CC(CCN2CCOCC2)C(c2ccccc2)(c2ccccc2)C1=O-expected1120)
        • PASSED [ 19%]
      • 0 ms
        passed(COc1ccc2c(c1OC)[C@]13CCN(C)[C@H](C2)[C@]1(O)CC[C@@H](O)C3-expected1121)
        • PASSED [ 19%]
      • 0 ms
        passed(CNCCC(Oc1cccc2ccccc12)c1cccs1-expected1122)
        • PASSED [ 19%]
      • 0 ms
        passed(O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1123)
        • PASSED [ 19%]
      • 0 ms
        passed(O=C(CN1CCCC1=O)NNC(=O)CN1CCCC1=O-expected1124)
        • PASSED [ 19%]
      • 0 ms
        passed(CCC(=O)N(c1ccc(Cl)c(Cl)c1)[C@@H]1CCC[C@H]1N(C)C-expected1125)
        • PASSED [ 19%]
      • 0 ms
        passed(CC1=NN(c2ccccc2)C(=O)C1-expected1126)
        • PASSED [ 19%]
      • 0 ms
        passed(Cc1nccn1C(C)c1ccccc1-expected1127)
        • PASSED [ 19%]
      • 0 ms
        passed(CCN(CC)C/C=C1/c2ccccc2Nc2cc(Cl)ccc21-expected1128)
        • PASSED [ 19%]
      • 0 ms
        passed(CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected1129)
        • PASSED [ 19%]
      • 1 ms
        passed(Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1-expected1130)
        • PASSED [ 19%]
      • 0 ms
        passed(c1cc2c(c(N3CCNCC3)c1)OCCO2-expected1131)
        • PASSED [ 19%]
      • 0 ms
        passed(CCC(CC)(CNC(=O)CCCO)c1cccc(OC)c1-expected1132)
        • PASSED [ 20%]
      • 0 ms
        passed(COc1ccccc1N1CCN(CC(O)COc2cc(OC)c(OC)c(OC)c2)CC1-expected1133)
        • PASSED [ 20%]
      • 0 ms
        passed(CCOC(=O)N(Cc1ccccc1)C1CC1-expected1134)
        • PASSED [ 20%]
      • 0 ms
        passed(OC1CCN(c2ccc(-c3ccc(Cl)cc3Cl)nn2)CC1-expected1135)
        • PASSED [ 20%]
      • 0 ms
        passed(CCN(CC)C(=O)[C@H]1[C@H](C(=O)N(CC)CC)[C@H]2C=C[C@@H]1C2-expected1136)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(=O)C1CCC2C3CC(C)C4=CC(=O)C=CC4(C)C3C(O)CC12C-expected1137)
        • PASSED [ 20%]
      • 0 ms
        passed(CC1OC2(CCCCC2Oc2cccc(Cl)c2)NC1=O-expected1138)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected1139)
        • PASSED [ 20%]
      • 0 ms
        passed(CN1CCC2=C(CC1)c1ccccc1N(C)c1ccccc12-expected1140)
        • PASSED [ 20%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(C(C)=O)ccc1OC-expected1141)
        • PASSED [ 20%]
      • 0 ms
        passed(CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1142)
        • PASSED [ 20%]
      • 0 ms
        passed(CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1-expected1143)
        • PASSED [ 20%]
      • 0 ms
        passed(CCOC1c2ccccc2C(=O)N(C)c2ccccc21-expected1144)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCl-expected1145)
        • PASSED [ 20%]
      • 0 ms
        passed(C=C-expected1146)
        • PASSED [ 20%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC=C(C)C1=O-expected1147)
        • PASSED [ 20%]
      • 0 ms
        passed(CCNC1(c2ccccc2)CCCCC1-expected1148)
        • PASSED [ 20%]
      • 0 ms
        passed(CCC(C(N)=O)N1CCCC1=O-expected1149)
        • PASSED [ 20%]
      • 0 ms
        passed(CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1150)
        • PASSED [ 20%]
      • 1 ms
        passed(O=C(O)/C=C/C(=O)O_OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected1151)
        • PASSED [ 20%]
      • 0 ms
        passed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC-expected1152)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(O)ccc5c4C12CCN(C)C3C5-expected1153)
        • PASSED [ 20%]
      • 0 ms
        passed(CCC1(c2ccccc2)OCC(C2CCCCN2)O1-expected1154)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155)
        • PASSED [ 20%]
      • 0 ms
        passed(CN(C)CCCn1c(=O)c2ccccc2c2ccccc21-expected1156)
        • PASSED [ 20%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C-expected1157)
        • PASSED [ 20%]
      • 0 ms
        passed(O=C1CC[C@H](C(=O)N2CCCCC2)N1-expected1158)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1159)
        • PASSED [ 20%]
      • 0 ms
        passed(NC(=O)OCC(COC(N)=O)c1ccccc1-expected1160)
        • PASSED [ 20%]
      • 0 ms
        passed(COc1ccc(OCC2CN(C)CCC2c2ccccc2)cc1-expected1161)
        • PASSED [ 20%]
      • 0 ms
        passed(O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162)
        • PASSED [ 20%]
      • 1 ms
        passed(CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1-expected1163)
        • PASSED [ 20%]
      • 0 ms
        passed(CCNC1C2CCC(C2)C1c1ccccc1-expected1164)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCCN/C(=C1/C=C(Cl)C=CC1=O)c1ccccc1Cl-expected1165)
        • PASSED [ 20%]
      • 0 ms
        passed(c1ccc(CC2NCCc3c2[nH]c2ccccc32)cc1-expected1166)
        • PASSED [ 20%]
      • 0 ms
        passed(CCC1C(=O)NC(=O)C1(C)c1ccccc1-expected1167)
        • PASSED [ 20%]
      • 0 ms
        passed(Clc1ccc(OCC2=NCCN2)cc1Cl-expected1168)
        • PASSED [ 20%]
      • 0 ms
        passed(CC1NC(=O)COC1c1ccccc1-expected1169)
        • PASSED [ 20%]
      • 0 ms
        passed(CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1-expected1170)
        • PASSED [ 20%]
      • 0 ms
        passed(CCNC1=NC(=O)C(c2ccccc2)O1-expected1171)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(C)(O)CC(C)(O)c1ccc(Cl)cc1-expected1172)
        • PASSED [ 20%]
      • 0 ms
        passed(Cn1nc(-c2cccnc2)nc1-c1ccccc1CO-expected1173)
        • PASSED [ 20%]
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)N1CCN(Cc2ccc3c(c2)OCO3)CC1-expected1174)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccccc1F-expected1175)
        • PASSED [ 20%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1-expected1176)
        • PASSED [ 20%]
      • 0 ms
        passed(CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1177)
        • PASSED [ 20%]
      • 1 ms
        passed(CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178)
        • PASSED [ 20%]
      • 0 ms
        passed(CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179)
        • PASSED [ 20%]
      • 0 ms
        passed(COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1-expected1180)
        • PASSED [ 20%]
      • 0 ms
        passed(CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1-expected1181)
        • PASSED [ 20%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected1182)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183)
        • PASSED [ 20%]
      • 0 ms
        passed(Cc1cc2c(s1)=Nc1ccc(F)cc1NC=2N1CCN(C)CC1-expected1184)
        • PASSED [ 20%]
      • 0 ms
        passed(COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1185)
        • PASSED [ 20%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187)
        • PASSED [ 20%]
      • 0 ms
        passed(CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188)
        • PASSED [ 20%]
      • 0 ms
        passed(CCS(=O)(=O)c1ccc(F)cc1-expected1189)
        • PASSED [ 21%]
      • 0 ms
        passed(CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190)
        • PASSED [ 21%]
      • 0 ms
        passed(C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21-expected1191)
        • PASSED [ 21%]
      • 0 ms
        passed(CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1-expected1192)
        • PASSED [ 21%]
      • 0 ms
        passed(CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193)
        • PASSED [ 21%]
      • 0 ms
        passed(OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1194)
        • PASSED [ 21%]
      • 0 ms
        passed(NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1-expected1195)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2-expected1196)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO-expected1197)
        • PASSED [ 21%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1198)
        • PASSED [ 21%]
      • 0 ms
        passed(CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199)
        • PASSED [ 21%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200)
        • PASSED [ 21%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1-expected1201)
        • PASSED [ 21%]
      • 0 ms
        passed(CCOC(=O)c1cncn1C(C)c1ccc(F)cc1-expected1202)
        • PASSED [ 21%]
      • 0 ms
        passed(OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1-expected1203)
        • PASSED [ 21%]
      • 0 ms
        passed(CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21-expected1204)
        • PASSED [ 21%]
      • 0 ms
        passed(COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1_O=C(O)/C=C\\C(=O)O-expected1205)
        • PASSED [ 21%]
      • 0 ms
        passed(CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1-expected1206)
        • PASSED [ 21%]
      • 0 ms
        passed(Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1-expected1207)
        • PASSED [ 21%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208)
        • PASSED [ 21%]
      • 0 ms
        passed(CP(C)(=O)CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected1209)
        • PASSED [ 21%]
      • 0 ms
        passed(NNC(=O)CP(=O)(c1ccccc1)c1ccccc1-expected1210)
        • PASSED [ 21%]
      • 0 ms
        passed(C[C@@H]1O[C@@H]1P(=O)(O)O-expected1211)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O-expected1212)
        • PASSED [ 21%]
      • 0 ms
        passed(CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1213)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1214)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1OCCC1C1(O)CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1215)
        • PASSED [ 21%]
      • 0 ms
        passed(C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N-expected1216)
        • PASSED [ 21%]
      • 0 ms
        passed(O=c1[nH]oc2c1CCNC2-expected1217)
        • PASSED [ 21%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@](C)(O)CC[C@]4(C)[C@H]3CC[C@]12C-expected1218)
        • PASSED [ 21%]
      • 0 ms
        passed(COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12-expected1219)
        • PASSED [ 21%]
      • 0 ms
        passed(CCC12CCN(CC3CC3)C(Cc3ccc(O)cc31)C2(C)C-expected1220)
        • PASSED [ 21%]
      • 0 ms
        passed(CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1_[Cl-]_[H+]-expected1221)
        • PASSED [ 21%]
        • [14:08:10] WARNING: not removing hydrogen atom without neighbors
          [14:08:10] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3-expected1222)
        • PASSED [ 21%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C(c1cccc(Cl)c1)=NN=C(C)C2-expected1223)
        • PASSED [ 21%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1-expected1224)
        • PASSED [ 21%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO-expected1225)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C(NCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1)c1ccc(F)cc1-expected1226)
        • PASSED [ 21%]
      • 1 ms
        passed(CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227)
        • PASSED [ 21%]
      • 0 ms
        passed(C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F-expected1228)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1-expected1229)
        • PASSED [ 21%]
      • 0 ms
        passed(CCCCCC(N)C(O)(c1ccccc1)c1ccccc1-expected1230)
        • PASSED [ 21%]
      • 0 ms
        passed(OCCN1C=CN(CCCN2c3ccccc3C=Cc3ccccc32)C=CC1-expected1231)
        • PASSED [ 21%]
      • 1 ms
        passed(CCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(OC)ccc5c4C12CCN(CC1CC1)C3C5-expected1232)
        • PASSED [ 21%]
      • 0 ms
        passed(CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O-expected1233)
        • PASSED [ 21%]
      • 0 ms
        passed(CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1234)
        • PASSED [ 21%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1235)
        • PASSED [ 21%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O_O-expected1236)
        • PASSED [ 21%]
      • 1 ms
        passed(CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C-expected1237)
        • PASSED [ 21%]
      • 1 ms
        passed(CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1-expected1238)
        • PASSED [ 21%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)CC[C@@]3(O)[C@H]1C5-expected1239)
        • PASSED [ 21%]
      • 0 ms
        passed(COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1-expected1240)
        • PASSED [ 21%]
      • 0 ms
        passed(CCC(Br)(C(N)=O)C(C)C-expected1241)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CCOCC1CC1-expected1242)
        • PASSED [ 21%]
      • 0 ms
        passed(Cc1cccc(O[C@H]2CCNC[C@H]2O)c1C-expected1243)
        • PASSED [ 21%]
      • 0 ms
        passed(O=C(/C=C/c1ccc2c(c1)OCO2)N1CCCCC1-expected1244)
        • PASSED [ 21%]
      • 0 ms
        passed(COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1-expected1245)
        • PASSED [ 21%]
      • 0 ms
        passed(CN1CCN(CCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)C1=O-expected1246)
        • PASSED [ 22%]
      • 0 ms
        passed(CN(C)CCN1CCN(c2cccc(Cl)c2)C1=O-expected1247)
        • PASSED [ 22%]
      • 0 ms
        passed(C[N+](C)([O-])CCCN1c2ccccc2CCc2ccccc21-expected1248)
        • PASSED [ 22%]
      • 1 ms
        passed(C1=Cc2cccc(OCC3CNCCO3)c2C1-expected1249)
        • PASSED [ 22%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected1250)
        • PASSED [ 22%]
      • 0 ms
        passed(CN(C)CCC1(c2ccccc2)C=Cc2ccccc21-expected1251)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(C)NNC(=O)COc1ccc(Cl)cc1-expected1252)
        • PASSED [ 22%]
      • 0 ms
        passed(CSc1c(Cl)nc(NC(C)C)nc1N1CCN(C)CC1-expected1253)
        • PASSED [ 22%]
      • 0 ms
        passed(Cc1cc(C(=O)NNCc2ccccc2)no1-expected1254)
        • PASSED [ 22%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F-expected1255)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256)
        • PASSED [ 22%]
      • 0 ms
        passed(CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257)
        • PASSED [ 22%]
      • 0 ms
        passed(C=C[C@@H]1CNCC[C@H]1CCCc1ccnc2ccc(OC)cc12-expected1258)
        • PASSED [ 22%]
      • 0 ms
        passed(CC1[C@H]2C(=O)c3ccc(O)cc3[C@]1(C)CCN2CC1CC1-expected1259)
        • PASSED [ 22%]
      • 0 ms
        passed(CC1=CC(=O)N2CC(=O)N(C)c3ccc(Cl)cc3C2(c2ccccc2)O1-expected1260)
        • PASSED [ 22%]
      • 0 ms
        passed(CCC(=O)C1(c2cccc(O)c2)CCN(C)CC1-expected1261)
        • PASSED [ 22%]
      • 0 ms
        passed(Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1-expected1262)
        • PASSED [ 22%]
      • 0 ms
        passed(O=C(CN1CCC23CCCCC2C1Cc1ccc(O)cc13)c1ccccc1-expected1263)
        • PASSED [ 22%]
      • 0 ms
        passed(O=C1N(c2ccccc2)c2ccccc2C1(Cc1ccncc1)Cc1ccncc1-expected1264)
        • PASSED [ 22%]
      • 0 ms
        passed(CCN(CC)C(=O)N[C@H]1C=C2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1265)
        • PASSED [ 22%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1266)
        • PASSED [ 22%]
      • 0 ms
        passed(O=C1CCNc2ccc(Cl)cc2N1c1ccccc1-expected1267)
        • PASSED [ 22%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C-expected1268)
        • PASSED [ 22%]
      • 0 ms
        passed(CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1_[Cl-]_[H+]-expected1269)
        • PASSED [ 22%]
        • [14:08:10] WARNING: not removing hydrogen atom without neighbors
          [14:08:10] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(COc1ccc(Cl)c2c1CCCC2N(C)C-expected1270)
        • PASSED [ 22%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)nc2C(c2ccccc2Cl)=NC1O-expected1271)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1-expected1272)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2Cl)c2cc(Cl)ccc21-expected1273)
        • PASSED [ 22%]
      • 0 ms
        passed(FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1-expected1274)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1CC[C@]23NC(=O)CC(c4cc(Cl)ccc4O2)C3C1-expected1275)
        • PASSED [ 22%]
      • 0 ms
        passed(CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl_O-expected1276)
        • PASSED [ 22%]
      • 0 ms
        passed(COC1=CC(=O)OC1C(O)c1ccccc1Cl-expected1277)
        • PASSED [ 22%]
      • 0 ms
        passed(CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1278)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1-expected1280)
        • PASSED [ 22%]
      • 0 ms
        passed(OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21-expected1281)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1CCN(CC(=O)[C@@]2(O)CC[C@H]3[C@@H]4CCC5=CC(=O)C=C[C@]5(C)[C@H]4[C@@H](O)C[C@@]32C)CC1-expected1282)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(NN)c1ccccc1-expected1283)
        • PASSED [ 22%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(N)=O-expected1284)
        • PASSED [ 22%]
      • 0 ms
        passed(C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O-expected1285)
        • PASSED [ 22%]
      • 0 ms
        passed(CNC(=O)NC(O)C(Cl)(Cl)Cl-expected1286)
        • PASSED [ 22%]
      • 0 ms
        passed(C[C@@H]1CC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC2(C)[C@@]1(O)C(=O)CO-expected1287)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@]12C-expected1288)
        • PASSED [ 22%]
      • 0 ms
        passed(CCN(CC)CCNC(=O)COc1ccc(OC)cc1_[Cl-]_[H+]-expected1289)
        • PASSED [ 22%]
        • [14:08:10] WARNING: not removing hydrogen atom without neighbors
          [14:08:10] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1290)
        • PASSED [ 22%]
      • 0 ms
        passed(CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1291)
        • PASSED [ 22%]
      • 0 ms
        passed(CC12CC3CC(C)(C1)CC(N)(C3)C2-expected1292)
        • PASSED [ 22%]
      • 0 ms
        passed(COc1ccccc1OCC1CNC(=O)O1-expected1293)
        • PASSED [ 22%]
      • 0 ms
        passed(COc1ccc2c(c1)C(O)(CCCN(C)C)c1ccccc1S2-expected1294)
        • PASSED [ 22%]
      • 0 ms
        passed(CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21-expected1295)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(=O)Nc1cccc(O)c1-expected1296)
        • PASSED [ 22%]
      • 0 ms
        passed(CC(C)(O)C(C)(O)c1cccc(Cl)c1-expected1297)
        • PASSED [ 22%]
      • 0 ms
        passed(CN(C)CCN(Cc1cccs1)c1ccccn1-expected1298)
        • PASSED [ 22%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(C)C1=O-expected1299)
        • PASSED [ 22%]
      • 0 ms
        passed(CCCC(C)C1(CCSC)C(=O)NC(=S)NC1=O-expected1300)
        • PASSED [ 22%]
      • 0 ms
        passed(CC1=CCC2C3Cc4ccc(O)c5c4C2(CCN3C)C1O5-expected1301)
        • PASSED [ 22%]
      • 0 ms
        passed(CO[C@H]1CC[C@H]2[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1302)
        • PASSED [ 23%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1303)
        • PASSED [ 23%]
      • 0 ms
        passed(Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304)
        • PASSED [ 23%]
      • 0 ms
        passed(COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC-expected1305)
        • PASSED [ 23%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc2c(c1)N(CCCN1CCC(C(N)=O)CC1)c1ccccc1S2-expected1306)
        • PASSED [ 23%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@@]2(C)C(=O)CC[C@H]3[C@H]1C5-expected1307)
        • PASSED [ 23%]
      • 0 ms
        passed(COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC-expected1308)
        • PASSED [ 23%]
      • 0 ms
        passed(COc1ccc2c(c1)C(N1CCN(C)CC1)=Cc1ccccc1O2-expected1309)
        • PASSED [ 23%]
      • 0 ms
        passed(COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1-expected1310)
        • PASSED [ 23%]
      • 0 ms
        passed(CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21-expected1311)
        • PASSED [ 23%]
      • 0 ms
        passed(CC1COC2(c3ccccc3Cl)c3cc(Cl)ccc3NC(=O)CN12-expected1312)
        • PASSED [ 23%]
      • 0 ms
        passed(CNc1nc(Cl)c(SC)c(N2CCN(C)CC2)n1-expected1313)
        • PASSED [ 23%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected1314)
        • PASSED [ 23%]
      • 0 ms
        passed(NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F-expected1315)
        • PASSED [ 23%]
      • 0 ms
        passed(CCCCCNCC(N)=O-expected1316)
        • PASSED [ 23%]
      • 0 ms
        passed(CO/N=C/C1=CCCN(C)C1-expected1317)
        • PASSED [ 23%]
      • 0 ms
        passed(Cc1cc(-c2ccccc2)nnc1NCCN1CCOCC1-expected1318)
        • PASSED [ 23%]
      • 0 ms
        passed(CCO[C@H]1C[C@@]2(C)[C@@H](CC[C@@H]3[C@@H]2[C@H](N(C)C)C[C@]2(C)[C@@H](C(C)=O)CC[C@@H]32)C[C@@H]1O-expected1319)
        • PASSED [ 23%]
      • 0 ms
        passed(CN1[C@@H]2CC[C@H]1CC(NC(=O)c1cn(C3CCCCC3)c3ccccc3c1=O)C2-expected1320)
        • PASSED [ 23%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected1321)
        • PASSED [ 23%]
      • 0 ms
        passed(NC(=O)CS(=O)C(c1ccccc1)c1ccccc1-expected1322)
        • PASSED [ 23%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1323)
        • PASSED [ 23%]
      • 0 ms
        passed(CNCCCN1c2ccccc2C(C)(C)c2ccccc21-expected1324)
        • PASSED [ 23%]
      • 0 ms
        passed(CC1(c2ccccc2)CC(=O)N(CN2CCOCC2)C1=O-expected1325)
        • PASSED [ 23%]
      • 0 ms
        passed(O=C1NC2CCCCN2C12CCN(CCCN1c3ccccc3CCc3ccc(Cl)cc31)CC2-expected1326)
        • PASSED [ 23%]
      • 0 ms
        passed(COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1327)
        • PASSED [ 23%]
      • 0 ms
        passed(CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1-expected1328)
        • PASSED [ 23%]
      • 0 ms
        passed(CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1-expected1329)
        • PASSED [ 23%]
      • 0 ms
        passed(CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1330)
        • PASSED [ 23%]
      • 0 ms
        passed(CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1-expected1331)
        • PASSED [ 23%]
      • 0 ms
        passed(CCCCCCC(C)(C)c1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(=O)C[C@@H]21-expected1332)
        • PASSED [ 23%]
      • 0 ms
        passed(O=C(Cn1ccnc1)c1ccc2ccccc2c1-expected1333)
        • PASSED [ 23%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F_O-expected1334)
        • PASSED [ 23%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)CCC4(O)C(C2)N(CC2CCC2)CCC314-expected1335)
        • PASSED [ 23%]
      • 0 ms
        passed(C=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected1336)
        • PASSED [ 23%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected1337)
        • PASSED [ 23%]
      • 0 ms
        passed(CN=C(Cc1ccc2ccccc2c1)[NH2+]C_[Cl-]-expected1338)
        • PASSED [ 23%]
      • 0 ms
        passed(C1=C(CC2=NCNC2)CCc2ccccc21-expected1339)
        • PASSED [ 23%]
      • 0 ms
        passed(CC(Oc1cccc2ccccc12)/C(N)=N/O-expected1340)
        • PASSED [ 23%]
      • 0 ms
        passed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1_[Cl-]_[H+]-expected1341)
        • PASSED [ 23%]
        • [14:08:10] WARNING: not removing hydrogen atom without neighbors
          [14:08:10] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)CN1CCCC1=O-expected1342)
        • PASSED [ 23%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCc2noc3cc(F)ccc23)CC1-expected1343)
        • PASSED [ 23%]
      • 0 ms
        passed(O=C(CCNNC(=O)c1ccncc1)NCc1ccccc1-expected1344)
        • PASSED [ 23%]
      • 0 ms
        passed(CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1-expected1345)
        • PASSED [ 23%]
      • 0 ms
        passed(C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C-expected1346)
        • PASSED [ 23%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5-expected1347)
        • PASSED [ 23%]
      • 0 ms
        passed(O=C(c1cccnc1)N1CCOCC1-expected1348)
        • PASSED [ 23%]
      • 0 ms
        passed(NC(=O)c1cccnc1-expected1349)
        • PASSED [ 23%]
      • 0 ms
        passed(CCN(CC)C(=O)c1cccnc1-expected1350)
        • PASSED [ 23%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1351)
        • PASSED [ 23%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C-expected1352)
        • PASSED [ 23%]
      • 0 ms
        passed(CNCCC(Oc1ccccc1OC)c1ccccc1-expected1353)
        • PASSED [ 23%]
      • 0 ms
        passed(N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1-expected1354)
        • PASSED [ 23%]
      • 1 ms
        passed(C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C-expected1355)
        • PASSED [ 23%]
      • 0 ms
        passed(CNC/C=C(/c1ccc(Br)cc1)c1cccnc1-expected1356)
        • PASSED [ 23%]
      • 0 ms
        passed(CN1Cc2c(N)cccc2C(c2ccccc2)C1-expected1357)
        • PASSED [ 23%]
      • 0 ms
        passed(CCCCCCCCCNc1ncnc2[nH]ccc12-expected1358)
        • PASSED [ 23%]
      • 0 ms
        passed(FCC(F)(F)F-expected1359)
        • PASSED [ 24%]
      • 0 ms
        passed(Oc1ccc2c(c1)C13CCCCC1C(C2)NCC3-expected1360)
        • PASSED [ 24%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)C=CC4C(C2)NCCC341-expected1361)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C1CN=C(C2=CCCCC2)c2cc(Cl)ccc2N1-expected1362)
        • PASSED [ 24%]
      • 0 ms
        passed(COc1ccc2c(c1OC)C(=O)O[C@@H]2[C@H]1c2c(cc3c(c2OC)OCO3)CCN1C-expected1363)
        • PASSED [ 24%]
      • 0 ms
        passed(CN(C)CCON=C1c2ccccc2CCc2ccccc21-expected1364)
        • PASSED [ 24%]
      • 0 ms
        passed(Clc1ccc2c(c1)/C(=C/C1CN3CCC1CC3)c1ccccc1S2-expected1365)
        • PASSED [ 24%]
      • 1 ms
        passed(Cc1nc2c(C)cccn2c(=O)c1CCN1CCC(c2noc3cc(F)ccc23)CC1-expected1366)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12-expected1367)
        • PASSED [ 24%]
      • 0 ms
        passed(CCCCCCC(C)NN-expected1368)
        • PASSED [ 24%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C2CC2c2ccccc21-expected1369)
        • PASSED [ 24%]
      • 1 ms
        passed(O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1-expected1370)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1-expected1371)
        • PASSED [ 24%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2CC(=O)c2ccccc21-expected1372)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(Cc1ccccc1)[N+](C)([O-])Cc1ccccc1-expected1373)
        • PASSED [ 24%]
      • 0 ms
        passed(NC(=O)CN1CC(O)CC1=O-expected1374)
        • PASSED [ 24%]
      • 0 ms
        passed(COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C-expected1375)
        • PASSED [ 24%]
      • 0 ms
        passed(NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O-expected1376)
        • PASSED [ 24%]
      • 0 ms
        passed(CN(C)C(=O)COC1c2ccccc2CCc2ccccc21-expected1377)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(C)CCC(=O)CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1-expected1378)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21-expected1379)
        • PASSED [ 24%]
      • 0 ms
        passed(COc1ccc(N2C[C@H](CN3CCC(O)(c4ccc5c(c4)OCO5)CC3)OC2=O)cc1-expected1380)
        • PASSED [ 24%]
      • 1 ms
        passed(Nc1cc(OCC2CC2)c(C(=O)NC2CN3CCC2CC3)cc1Cl-expected1381)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C(NC(=O)c1ccccc1)NC1CCN(Cc2ccc3ccccc3c2)CC1-expected1382)
        • PASSED [ 24%]
      • 0 ms
        passed(CC1OC(C)OC(C)O1-expected1383)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384)
        • PASSED [ 24%]
      • 0 ms
        passed(C#CCN(C)Cc1ccccc1-expected1385)
        • PASSED [ 24%]
      • 0 ms
        passed(Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1-expected1386)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C(CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1)N1CCC2(CC1)OCCO2-expected1387)
        • PASSED [ 24%]
      • 1 ms
        passed(OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected1388)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(OC(N)=O)C(C)C(C)OC(N)=O-expected1389)
        • PASSED [ 24%]
      • 0 ms
        passed(CCCCCN[C@@]12C=CC(=O)[C@@H]3Oc4c(O)ccc5c4[C@@]31CCN(C)[C@@H]2C5-expected1390)
        • PASSED [ 24%]
      • 0 ms
        passed(OCC1(CO)COC(C(Cl)(Cl)Cl)OC1-expected1391)
        • PASSED [ 24%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392)
        • PASSED [ 24%]
      • 0 ms
        passed(c1ccc(-c2nc(N3CCNCC3)cc3ccccc23)cc1-expected1393)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C1[C@H]2CCCC[C@H]2C(=O)N1CCCCN1CCN(c2nsc3ccccc23)CC1-expected1394)
        • PASSED [ 24%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1395)
        • PASSED [ 24%]
      • 0 ms
        passed(OC(OCC(COC(O)C(Cl)(Cl)Cl)(COC(O)C(Cl)(Cl)Cl)COC(O)C(Cl)(Cl)Cl)C(Cl)(Cl)Cl-expected1396)
        • PASSED [ 24%]
      • 0 ms
        passed(NC(=O)NC(=O)Cc1ccccc1-expected1397)
        • PASSED [ 24%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1-expected1398)
        • PASSED [ 24%]
      • 0 ms
        passed(CCC(C(=O)NC(N)=O)c1ccccc1-expected1399)
        • PASSED [ 24%]
      • 0 ms
        passed(CC1NCCOC1c1ccccc1-expected1400)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(COc1ccccc1)NN-expected1401)
        • PASSED [ 24%]
      • 0 ms
        passed(CN1C(=O)CC(c2ccccc2)C1=O-expected1402)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C([O-])c1ccccc1Oc1ccccc1-expected1403)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected1404)
        • PASSED [ 24%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(c2ccccc2)C1=O-expected1405)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C(c1ccccn1)N1CCN(Cc2ccccc2)CC1-expected1406)
        • PASSED [ 24%]
      • 0 ms
        passed(CCC[C@]1(c2cccc(O)c2)CCN(C)C[C@@H]1C-expected1407)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1-expected1408)
        • PASSED [ 24%]
      • 0 ms
        passed(c1ccc(-c2cc(CCC3CCNCC3)c3ccccc3n2)cc1-expected1409)
        • PASSED [ 24%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCC(CCO)CC1)c1ccccc1S2-expected1410)
        • PASSED [ 24%]
      • 0 ms
        passed(O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1-expected1411)
        • PASSED [ 24%]
      • 0 ms
        passed(CN1CCN(c2cc3c(nn2)Oc2ccccc2N3C)CC1-expected1412)
        • PASSED [ 24%]
      • 1 ms
        passed(CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413)
        • PASSED [ 24%]
      • 0 ms
        passed(CCc1c(C)[nH]c2c1C(=O)[C@@H]1CN(C)CC[C@H]1C2-expected1414)
        • PASSED [ 24%]
      • 0 ms
        passed(NC(=O)CN1CCCC1=O-expected1415)
        • PASSED [ 25%]
    • 280 ms
      test_num_rotable_bond_featurizer
      • 1 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12_[Cl]-expected0)
        • PASSED [ 25%]
      • 1 ms
        failed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected1)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected1])
          array([[9]]) != array([11])
          test_input = 'CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1', expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected2)
        • PASSED [ 25%]
      • 0 ms
        passed(CC(=O)NCCCOc1cccc(CN2CCCCC2)c1-expected3)
        • PASSED [ 25%]
      • 0 ms
        passed(Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected4)
        • PASSED [ 25%]
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)C(=O)C1=O-expected5)
        • PASSED [ 25%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected6)
        • PASSED [ 25%]
      • 0 ms
        passed(Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O-expected7)
        • PASSED [ 25%]
      • 1 ms
        failed(COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1-expected8)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1-expected8])
          array([[6]]) != array([7])
          test_input = 'COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(N)=NC(=O)c1nc(Cl)c(N)nc1N-expected9)
        • PASSED [ 25%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O-expected10)
        • PASSED [ 25%]
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](F)[C@@H](CO)O2)c(=O)[nH]c1=O-expected11)
        • PASSED [ 25%]
      • 0 ms
        passed(ClCCl-expected12)
        • PASSED [ 25%]
      • 1 ms
        failed(CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected13)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected13])
          array([[12]]) != array([13])
          test_input = 'CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected14)
        • PASSED [ 25%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1-expected15)
        • PASSED [ 25%]
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected16)
        • PASSED [ 25%]
      • 1 ms
        failed(CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2-expected17)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2-expected17])
          array([[4]]) != array([5])
          test_input = 'CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(Cl)cc1C(=O)NCCc1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1-expected18)
        • PASSED [ 25%]
      • 0 ms
        passed(Nc1nnc(-c2cccc(Cl)c2Cl)c(N)n1-expected19)
        • PASSED [ 25%]
      • 0 ms
        passed(CCCC(C)C-expected20)
        • PASSED [ 25%]
      • 0 ms
        passed(C[C@H](N)Cc1ccccc1-expected21)
        • PASSED [ 25%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected22)
        • PASSED [ 25%]
      • 1 ms
        failed(CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2-expected23)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2-expected23])
          array([[5]]) != array([6])
          test_input = 'CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCc2cccs2)CC1-expected24)
        • PASSED [ 25%]
      • 1 ms
        failed(CCNC(=NC#N)NCCSCc1ncccc1Br-expected25)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCNC(=NC#N)NCCSCc1ncccc1Br-expected25])
          array([[6]]) != array([8])
          test_input = 'CCNC(=NC#N)NCCSCc1ncccc1Br', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1-expected26)
        • PASSED [ 25%]
      • 0 ms
        passed(CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1-expected27)
        • PASSED [ 25%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected28)
        • PASSED [ 25%]
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O_O-expected29)
        • PASSED [ 25%]
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected30)
        • PASSED [ 25%]
      • 0 ms
        passed(C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected31)
        • PASSED [ 25%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected32)
        • PASSED [ 25%]
      • 1 ms
        failed(CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33])
          array([[1]]) != array([3])
          test_input = 'CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1CCN(CCc2ccccc2)CC1-expected34)
        • PASSED [ 25%]
      • 1 ms
        failed(CCOC(=O)c1cncn1C(C)c1ccccc1-expected35)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)c1cncn1C(C)c1ccccc1-expected35])
          array([[4]]) != array([5])
          test_input = 'CCOC(=O)c1cncn1C(C)c1ccccc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)c1cc(-c2nc(N)n[nH]2)ccn1-expected36)
        • PASSED [ 25%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected37)
        • PASSED [ 25%]
      • 0 ms
        passed(Nc1ccc(-c2nc3ccc(O)cc3s2)cc1I-expected38)
        • PASSED [ 25%]
      • 0 ms
        passed(CC(=O)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected39)
        • PASSED [ 25%]
      • 0 ms
        passed(CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2-expected40)
        • PASSED [ 25%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CO)NC(=O)C(Cl)Cl)cc1-expected41)
        • PASSED [ 25%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2ccccc2)cs1-expected42)
        • PASSED [ 25%]
      • 0 ms
        passed(Cc1cccc(C)c1OCC(C)N-expected43)
        • PASSED [ 25%]
      • 1 ms
        failed(CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C-expected44)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C-expected44])
          array([[8]]) != array([9])
          test_input = 'CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected45)
        • PASSED [ 25%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](O)c3ccccc3)[C@H]2SC1-expected46)
        • PASSED [ 25%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected47)
        • PASSED [ 25%]
      • 0 ms
        passed(O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1-expected48)
        • PASSED [ 25%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@H]1C[C@@H]2[C@@H](O)c1ccnc2ccc(OC)cc12-expected49)
        • PASSED [ 25%]
      • 0 ms
        passed(CCc1ccccc1-expected50)
        • PASSED [ 25%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2cccc(N)c2)cs1-expected51)
        • PASSED [ 25%]
      • 1 ms
        failed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected52)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected52])
          array([[7]]) != array([10])
          test_input = 'CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1-expected53)
        • PASSED [ 25%]
      • 0 ms
        passed(NCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected54)
        • PASSED [ 25%]
      • 1 ms
        failed(CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1-expected55)
        • FAILED [ 25%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1-expected55])
          array([[11]]) != array([10])
          test_input = 'CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected56)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected56])
          array([[3]]) != array([5])
          test_input = 'CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCCc1ccccn1-expected57)
        • PASSED [ 26%]
      • 0 ms
        passed(CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21_[Cl-]_[H+]-expected58)
        • PASSED [ 26%]
        • [14:08:10] WARNING: not removing hydrogen atom without neighbors
          [14:08:10] WARNING: not removing hydrogen atom without neighbors
      • 1 ms
        failed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected59)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected59])
          array([[8]]) != array([10])
          test_input = 'CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected60)
        • PASSED [ 26%]
      • 0 ms
        passed(CNCCCC12CCC(c3ccccc31)c1ccccc12-expected61)
        • PASSED [ 26%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected62)
        • PASSED [ 26%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected63)
        • PASSED [ 26%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1_[Na+]-expected64)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1.[Na+]-expected64])
          array([[7]]) != array([8])
          test_input = 'CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1.[Na+]'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected65)
        • PASSED [ 26%]
      • 0 ms
        passed(C1CCCCC1-expected66)
        • PASSED [ 26%]
      • 0 ms
        passed(Cc1csc(N=C(N)N)n1-expected67)
        • PASSED [ 26%]
      • 0 ms
        passed(CCCN(CCC)CCc1ccc(O)c2c1CC(=O)N2-expected68)
        • PASSED [ 26%]
      • 0 ms
        passed(CN1C[C@@H]2c3cc(Cl)ccc3Oc3ccccc3[C@@H]2C1-expected69)
        • PASSED [ 26%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70])
          array([[7]]) != array([8])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected71)
        • PASSED [ 26%]
      • 1 ms
        failed(CC[N+](C)(C)Cc1ccccc1Br_Cc1ccc(S(=O)(=O)[O-])cc1-expected72)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[N+](C)(C)Cc1ccccc1Br.Cc1ccc(S(=O)(=O)[O-])cc1-expected72])
          array([[4]]) != array([3])
          test_input = 'CC[N+](C)(C)Cc1ccccc1Br.Cc1ccc(S(=O)(=O)[O-])cc1'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected73)
        • PASSED [ 26%]
      • 0 ms
        failed(Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74])
          array([[4]]) != array([3])
          test_input = 'Cc1ncc([N+](=O)[O-])n1CC(O)CCl', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCN(CCC)CCc1cccc2c1CC(=O)N2-expected75)
        • PASSED [ 26%]
      • 0 ms
        passed(Clc1ccc2c(c1)[C@H]1CNC[C@H]1c1ccccc1O2-expected76)
        • PASSED [ 26%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected77)
        • PASSED [ 26%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1-expected78)
        • PASSED [ 26%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected79)
        • PASSED [ 26%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1C(NC(C)=O)CC2-expected80)
        • PASSED [ 26%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected81)
        • PASSED [ 26%]
      • 0 ms
        passed(Cc1ncsc1CCCl-expected82)
        • PASSED [ 26%]
      • 1 ms
        failed(CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1-expected83)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1-expected83])
          array([[9]]) != array([10])
          test_input = 'CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(FC(F)(F)CCl-expected84)
        • PASSED [ 26%]
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected85)
        • PASSED [ 26%]
      • 1 ms
        failed(CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86])
          array([[7]]) != array([8])
          test_input = 'CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C=CC[C@H](N)c1ccccc1-c1noc2ccccc12-expected87)
        • PASSED [ 26%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2O-expected88)
        • PASSED [ 26%]
      • 0 ms
        passed(CC(=O)Nc1ccc(O)cc1-expected89)
        • PASSED [ 26%]
      • 0 ms
        failed(CC(=O)Oc1ccccc1C(=O)O-expected90)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Oc1ccccc1C(=O)O-expected90])
          array([[2]]) != array([3])
          test_input = 'CC(=O)Oc1ccccc1C(=O)O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=c1ncnc2[nH][nH]cc1-2-expected91)
        • PASSED [ 26%]
      • 0 ms
        passed(CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O-expected92)
        • PASSED [ 26%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O_Cn1c(=O)c2[nH]cnc2n(C)c1=O_NCCN-expected93)
        • PASSED [ 26%]
      • 0 ms
        passed(CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1-expected94)
        • PASSED [ 26%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O_O_O_O-expected95)
        • PASSED [ 26%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected96)
        • PASSED [ 26%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected97)
        • PASSED [ 26%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2_O=C(O)CCC(=O)O-expected98)
        • PASSED [ 26%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2)=NC1O-expected99)
        • PASSED [ 26%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1-expected100)
        • PASSED [ 26%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@@]4(O)[C@@H](C2)N(C)CC[C@]314-expected101)
        • PASSED [ 26%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected102)
        • PASSED [ 26%]
      • 0 ms
        passed(CN1CCCC(CN2c3ccccc3Sc3ccccc32)C1-expected103)
        • PASSED [ 26%]
      • 0 ms
        passed(NC1=NC(=O)C(c2ccccc2)O1-expected104)
        • PASSED [ 26%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@@]2(C)c3cc(O)ccc3C[C@@H]1[C@H]2C-expected105)
        • PASSED [ 26%]
      • 0 ms
        passed(CCc1cc(C(N)=S)ccn1-expected106)
        • PASSED [ 26%]
      • 0 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](O[C@@H]3O[C@@H]5CO[C@@H](C)O[C@H]5[C@H](O)[C@H]3O)C3COC(=O)[C@@H]32)OCO4)cc(OC)c1O-expected107)
        • PASSED [ 26%]
      • 0 ms
        passed(NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1-expected108)
        • PASSED [ 26%]
      • 0 ms
        passed(OC(Cn1cncn1)(Cn1cncn1)c1ccc(F)cc1F-expected109)
        • PASSED [ 26%]
      • 0 ms
        failed(O=C([O-])P(=O)([O-])[O-]_[Na+]_[Na+]_[Na+]-expected110)
        • FAILED [ 26%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C([O-])P(=O)([O-])[O-].[Na+].[Na+].[Na+]-expected110])
          array([[1]]) != array([0])
          test_input = 'O=C([O-])P(=O)([O-])[O-].[Na+].[Na+].[Na+]'
          expected = array([0.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([0])
          E Full diff:
          E - array([0])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCC1(CC(=O)O)CCCCC1-expected111)
        • PASSED [ 26%]
      • 0 ms
        passed(CCOc1ccc2ccccc2c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)[O-]_[Na+]-expected112)
        • PASSED [ 26%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21-expected113)
        • PASSED [ 27%]
      • 1 ms
        failed(Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C-expected114)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C-expected114])
          array([[9]]) != array([10])
          test_input = 'Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(CCN2CCC(Nc3nc4ccccc4n3Cc3ccc(F)cc3)CC2)cc1-expected115)
        • PASSED [ 27%]
      • 1 ms
        failed(CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected116)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected116])
          array([[4]]) != array([5])
          test_input = 'CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected117)
        • FAILED [ 27%]
        • [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]-expected117])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected118)
        • PASSED [ 27%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected119)
        • PASSED [ 27%]
      • 0 ms
        passed(C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O-expected120)
        • PASSED [ 27%]
      • 0 ms
        failed(CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2-expected121)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2-expected121])
          array([[5]]) != array([6])
          test_input = 'CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1_[Na+]-expected122)
        • PASSED [ 27%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123])
          array([[7]]) != array([8])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1-expected124)
        • PASSED [ 27%]
      • 0 ms
        passed(CCCN1C[C@H](CSC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected125)
        • PASSED [ 27%]
      • 0 ms
        failed(CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126])
          array([[0]]) != array([1])
          test_input = 'CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected127)
        • PASSED [ 27%]
      • 0 ms
        failed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1-expected128)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C1(c2ccccc2)CCN(C)CC1-expected128])
          array([[3]]) != array([4])
          test_input = 'CCOC(=O)C1(c2ccccc2)CCN(C)CC1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(c1ccc(C2(N3CCCCC3)CCCCC2)cc1-expected129)
        • PASSED [ 27%]
      • 0 ms
        passed(NNCCc1ccccc1_O=S(=O)(O)O-expected130)
        • PASSED [ 27%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NC(=O)NC1=O-expected131)
        • PASSED [ 27%]
      • 0 ms
        failed(NC(=O)OCCCc1ccccc1-expected132)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[NC(=O)OCCCc1ccccc1-expected132])
          array([[4]]) != array([5])
          test_input = 'NC(=O)OCCCc1ccccc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected133)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected133])
          array([[1]]) != array([2])
          test_input = 'CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCC(O)c1ccc(O)c(O)c1-expected134)
        • PASSED [ 27%]
      • 0 ms
        passed(COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1-expected135)
        • PASSED [ 27%]
      • 0 ms
        passed(Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected136)
        • PASSED [ 27%]
      • 0 ms
        passed(OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O-expected137)
        • PASSED [ 27%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]-expected138)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]-expected138])
          array([[5]]) != array([4])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl-expected139)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl-expected139])
          array([[6]]) != array([5])
          test_input = 'O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O-expected140)
        • PASSED [ 27%]
      • 0 ms
        passed(CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1-expected141)
        • PASSED [ 27%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl-expected143)
        • PASSED [ 27%]
      • 0 ms
        failed(CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1-expected144)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1-expected144])
          array([[4]]) != array([5])
          test_input = 'CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)O-expected145)
        • PASSED [ 27%]
      • 0 ms
        passed(Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1-expected146)
        • PASSED [ 27%]
      • 0 ms
        passed(C[C@]12C[C@H](O)[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2C(=O)CO-expected147)
        • PASSED [ 27%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected148)
        • PASSED [ 27%]
      • 0 ms
        passed(OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1-expected149)
        • PASSED [ 27%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected150)
        • PASSED [ 27%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3COc3ccc(Cl)cc32)CC1-expected151)
        • PASSED [ 27%]
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected152)
        • PASSED [ 27%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CC1CC1-expected153)
        • PASSED [ 27%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@@H]4C[C@H](O)CC[C@]4(C)[C@H]3CC[C@]12C-expected154)
        • PASSED [ 27%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NCNC1=O-expected155)
        • PASSED [ 27%]
      • 0 ms
        failed(CCN(CC)CCOC(=O)c1ccc(N)cc1-expected156)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)CCOC(=O)c1ccc(N)cc1-expected156])
          array([[6]]) != array([7])
          test_input = 'CCN(CC)CCOC(=O)c1ccc(N)cc1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OC(CCN1CCCC1)(c1ccccc1)C1CCCCC1-expected157)
        • PASSED [ 27%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccccc21-expected158)
        • PASSED [ 27%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2[nH]ccc12-expected159)
        • PASSED [ 27%]
      • 1 ms
        passed(CO[C@H](C(=O)[C@@H](O)[C@@H](C)O)[C@@H]1Cc2cc3cc(O[C@H]4C[C@@H](O[C@H]5C[C@@H](O)[C@H](O)[C@@H](C)O5)[C@H](O)[C@@H](C)O4)c(C)c(O)c3c(O)c2C(=O)[C@H]1O[C@H]1C[C@@H](O[C@H]2C[C@@H](O[C@H]3C[C@](C)(O)[C@H](O)[C@@H](C)O3)[C@H](O)[C@@H](C)O2)[C@H](O)[C@@H](C)O1-expected160)
        • PASSED [ 27%]
      • 0 ms
        failed(CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161)
        • FAILED [ 27%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161])
          array([[10]]) != array([11])
          test_input = 'CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(C1CCCCC1)N1CC(=O)N2CCc3ccccc3C2C1-expected162)
        • PASSED [ 27%]
      • 0 ms
        passed(COc1cc(Cc2cnc(N)nc2N)cc(OC)c1OC-expected163)
        • PASSED [ 27%]
      • 0 ms
        passed(COc1cc(NCc2ccc3nc(N)nc(N)c3c2C)cc(OC)c1OC-expected164)
        • PASSED [ 27%]
      • 0 ms
        passed(NC(CO)(CO)CO-expected165)
        • PASSED [ 27%]
      • 0 ms
        passed(NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12-expected166)
        • PASSED [ 27%]
      • 0 ms
        passed(NC(N)=O-expected167)
        • PASSED [ 27%]
      • 0 ms
        passed(O=c1ccc2ccccc2o1-expected168)
        • PASSED [ 27%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)c2ccc(N)cc2)cc1-expected169)
        • PASSED [ 28%]
      • 0 ms
        passed(C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C-expected170)
        • PASSED [ 28%]
      • 0 ms
        passed(O=c1c(Cc2c(O)oc3ccccc3c2=O)c(O)oc2ccccc12-expected171)
        • PASSED [ 28%]
      • 0 ms
        failed(CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1-expected172)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1-expected172])
          array([[7]]) != array([8])
          test_input = 'CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC/C(=C(/CC)c1ccc(O)cc1)c1ccc(O)cc1-expected173)
        • PASSED [ 28%]
      • 1 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5CC[C@]5(C)[C@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected174)
        • PASSED [ 28%]
      • 0 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5C[C@@H](O)[C@]5(C)[C@@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected175)
        • PASSED [ 28%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1-expected176)
        • PASSED [ 28%]
      • 0 ms
        passed(CC(CN1c2ccccc2Sc2ccccc21)N(C)C-expected177)
        • PASSED [ 28%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CC(C)N(C)C)c1ccccc1S2-expected178)
        • PASSED [ 28%]
      • 0 ms
        passed(CC(C)c1cccc(C(C)C)c1O-expected179)
        • PASSED [ 28%]
      • 0 ms
        passed(CNCCCC1c2ccccc2C=Cc2ccccc21-expected180)
        • PASSED [ 28%]
      • 0 ms
        passed(O=c1cc[nH]nc1-expected181)
        • PASSED [ 28%]
      • 0 ms
        passed(Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21-expected182)
        • PASSED [ 28%]
      • 1 ms
        failed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected183)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected183])
          array([[9]]) != array([11])
          test_input = 'COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected184)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected184])
          array([[8]]) != array([10])
          test_input = 'COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C=CCC1(C(C)CCC)C(=O)NC(=O)NC1=O-expected185)
        • PASSED [ 28%]
      • 0 ms
        passed(O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1_[Cl-]_[H+]-expected186)
        • PASSED [ 28%]
        • [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C1C(=O)c2ccccc2C(O)=C1C1CCC(c2ccc(Cl)cc2)CC1-expected187)
        • PASSED [ 28%]
      • 0 ms
        passed(O=C(O)CCCCCCCC(=O)O-expected188)
        • PASSED [ 28%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)C(C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)CN(C)[C@H](C)[C@@H](O)[C@]1(C)O-expected189)
        • PASSED [ 28%]
      • 0 ms
        failed(CC(C[N+](C)(C)C)OC(N)=O_[Cl-]-expected190)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C[N+](C)(C)C)OC(N)=O.[Cl-]-expected190])
          array([[3]]) != array([4])
          test_input = 'CC(C[N+](C)(C)C)OC(N)=O.[Cl-]', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CC(C)C[C@H]1C(=O)N2CCC[C@H]2[C@]2(O)O[C@](NC(=O)[C@@H]3C=C4c5cccc6[nH]c(Br)c(c56)C[C@H]4N(C)C3)(C(C)C)C(=O)N12-expected191)
        • PASSED [ 28%]
      • 1 ms
        failed(CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected192)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected192])
          array([[4]]) != array([5])
          test_input = 'CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCCc1ccc(O)c(O)c1-expected193)
        • PASSED [ 28%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected194)
        • PASSED [ 28%]
      • 1 ms
        failed(C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21_O-expected195)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21.O-expected195])
          array([[1]]) != array([2])
          test_input = 'C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21.O'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1_[Cl]-expected196)
        • PASSED [ 28%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1-expected197)
        • PASSED [ 28%]
      • 0 ms
        passed(CC(C)[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)CNC(=O)[C@@H](C)NC(=O)[C@@H](N)Cc1ccc(O)cc1)C(N)=O-expected198)
        • PASSED [ 28%]
      • 0 ms
        passed(CN[C@@H](C)[C@H](O)c1ccccc1-expected199)
        • PASSED [ 28%]
      • 0 ms
        passed(CNC[C@H](O)c1ccc(O)c(O)c1-expected200)
        • PASSED [ 28%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected201)
        • PASSED [ 28%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C@@H]2O-expected202)
        • PASSED [ 28%]
      • 0 ms
        passed(Nc1c2c(nc3ccccc13)CCCC2-expected203)
        • PASSED [ 28%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2)c2cc(Cl)ccc21-expected204)
        • PASSED [ 28%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C1CC(=O)C(CC(C)C)CN1CC2-expected205)
        • PASSED [ 28%]
      • 0 ms
        passed(CCCCCc1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(C)=C[C@@H]21-expected206)
        • PASSED [ 28%]
      • 0 ms
        passed(COC1=CC=C2[C@H]3Cc4ccc(OC)c5c4[C@@]2(CCN3C)[C@H]1O5-expected207)
        • PASSED [ 28%]
      • 0 ms
        passed(CCSc1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected208)
        • PASSED [ 28%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCCN1C)c1ccccc1S2-expected209)
        • PASSED [ 28%]
      • 0 ms
        passed(CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected210)
        • PASSED [ 28%]
      • 0 ms
        passed(N[C@@H]1C[C@H]1c1ccccc1_[Cl-]_[H+]-expected211)
        • PASSED [ 28%]
        • [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12-expected212)
        • PASSED [ 28%]
      • 0 ms
        passed(CS(=O)(=O)OCCCCOS(C)(=O)=O-expected213)
        • PASSED [ 28%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1-expected214)
        • PASSED [ 28%]
      • 0 ms
        passed(CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12-expected215)
        • PASSED [ 28%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC_O-expected216)
        • PASSED [ 28%]
      • 0 ms
        passed(Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1-expected217)
        • PASSED [ 28%]
      • 1 ms
        failed(C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2_[Br-]-expected218)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2.[Br-]-expected218])
          array([[4]]) != array([5])
          test_input = 'C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2.[Br-]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CCC2=O-expected219)
        • PASSED [ 28%]
      • 0 ms
        passed(C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl-expected220)
        • PASSED [ 28%]
      • 1 ms
        failed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C-expected221)
        • FAILED [ 28%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C-expected221])
          array([[0]]) != array([1])
          test_input = 'C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(Cc1ccc(O)cc1)NCC(O)c1cc(O)cc(O)c1-expected222)
        • PASSED [ 28%]
      • 0 ms
        passed(O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1F-expected223)
        • PASSED [ 28%]
      • 0 ms
        passed(Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected224)
        • PASSED [ 28%]
      • 0 ms
        passed(O=c1[nH]cc(F)c(=O)[nH]1-expected225)
        • PASSED [ 28%]
      • 0 ms
        passed(NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl-expected226)
        • PASSED [ 29%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1-expected227)
        • PASSED [ 29%]
      • 1 ms
        failed(C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1_[Br-]-expected228)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1.[Br-]-expected228])
          array([[4]]) != array([5])
          test_input = 'C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1.[Br-]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected229)
        • PASSED [ 29%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected230)
        • PASSED [ 29%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected231)
        • PASSED [ 29%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CCCCC1-expected232)
        • PASSED [ 29%]
      • 0 ms
        passed(COc1cc(C(=O)N2CCOCC2)cc(OC)c1OC-expected233)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(CN(C)C)CN1c2ccccc2CCc2ccccc21-expected234)
        • PASSED [ 29%]
      • 1 ms
        failed(CCCCNC(=O)OCC(C)(CCC)COC(N)=O-expected235)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCNC(=O)OCC(C)(CCC)COC(N)=O-expected235])
          array([[9]]) != array([11])
          test_input = 'CCCCNC(=O)OCC(C)(CCC)COC(N)=O', expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1-expected236)
        • PASSED [ 29%]
      • 0 ms
        passed(CCCC(CCC)C(=O)O-expected237)
        • PASSED [ 29%]
      • 0 ms
        passed(CN(C)C/C=C(/c1ccc(Br)cc1)c1cccnc1-expected238)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(C)N=c1cc2n(-c3ccc(Cl)cc3)c3ccccc3nc-2cc1Nc1ccc(Cl)cc1-expected239)
        • PASSED [ 29%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1[C@@H](NC(C)=O)CC2-expected240)
        • PASSED [ 29%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1-expected241)
        • PASSED [ 29%]
      • 0 ms
        passed(NC1CONC1=O-expected242)
        • PASSED [ 29%]
      • 0 ms
        passed(NC(=O)NO-expected243)
        • PASSED [ 29%]
      • 1 ms
        failed(CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2_[Br-]-expected244)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2.[Br-]-expected244])
          array([[5]]) != array([6])
          test_input = 'CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2.[Br-]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(N)=N/N=C/c1c(Cl)cccc1Cl-expected245)
        • PASSED [ 29%]
      • 0 ms
        passed(NC(N)=NCCN1CCCCCCC1-expected246)
        • PASSED [ 29%]
      • 1 ms
        failed(CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2-expected247)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2-expected247])
          array([[3]]) != array([4])
          test_input = 'CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NNc1nncc2ccccc12-expected248)
        • PASSED [ 29%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O-expected249)
        • PASSED [ 29%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected250)
        • PASSED [ 29%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O-expected251)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(C)Cc1ccc(C(C)C(=O)O)cc1-expected252)
        • PASSED [ 29%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected253)
        • PASSED [ 29%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected254)
        • PASSED [ 29%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCC[C@H]2O-expected255)
        • PASSED [ 29%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2-expected256)
        • PASSED [ 29%]
      • 0 ms
        failed(O=NN(CCCl)C(=O)NCCCl-expected257)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=NN(CCCl)C(=O)NCCCl-expected257])
          array([[5]]) != array([4])
          test_input = 'O=NN(CCCl)C(=O)NCCCl', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O-expected258)
        • PASSED [ 29%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(O)C(O)C1O-expected259)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1-expected260)
        • PASSED [ 29%]
      • 0 ms
        passed(O=C(c1ccccc1)c1ccc2n1CCC2C(=O)O-expected261)
        • PASSED [ 29%]
      • 0 ms
        passed(C[C@H](N)[C@H](O)c1cccc(O)c1-expected262)
        • PASSED [ 29%]
      • 0 ms
        passed(NNC(=O)c1ccncc1-expected263)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(O)c(O)c1-expected264)
        • PASSED [ 29%]
      • 0 ms
        passed(O=c1c(O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)c(-c2ccc(O)c(O)c2)oc2cc(O)cc(O)c12-expected265)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected266)
        • PASSED [ 29%]
      • 0 ms
        passed(CC(CCc1ccccc1)NCC(O)c1ccc(O)c(C(N)=O)c1-expected267)
        • PASSED [ 29%]
      • 0 ms
        passed(N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O-expected268)
        • PASSED [ 29%]
      • 0 ms
        passed(OCC(O)C(O)C(O)C(O)CO-expected269)
        • PASSED [ 29%]
      • 1 ms
        failed(C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270])
          array([[1]]) != array([2])
          test_input = 'C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl-expected271)
        • PASSED [ 29%]
      • 0 ms
        passed(Cc1cccc(Nc2ccccc2C(=O)O)c1C-expected272)
        • PASSED [ 29%]
      • 1 ms
        failed(CN=C(NC#N)NCCSCc1nc[nH]c1C-expected273)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN=C(NC#N)NCCSCc1nc[nH]c1C-expected273])
          array([[5]]) != array([7])
          test_input = 'CN=C(NC#N)NCCSCc1nc[nH]c1C', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(Clc1cccc(Cl)c1NC1=NCCN1-expected274)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Clc1cccc(Cl)c1NC1=NCCN1-expected274])
          array([[1]]) != array([2])
          test_input = 'Clc1cccc(Cl)c1NC1=NCCN1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1-expected275)
        • PASSED [ 29%]
      • 0 ms
        passed(COCCc1ccc(OCC(O)CNC(C)C)cc1-expected276)
        • PASSED [ 29%]
      • 0 ms
        failed(Cc1ncc([N+](=O)[O-])n1CCO-expected277)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1ncc([N+](=O)[O-])n1CCO-expected277])
          array([[3]]) != array([2])
          test_input = 'Cc1ncc([N+](=O)[O-])n1CCO', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C-expected278)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C-expected278])
          array([[2]]) != array([3])
          test_input = 'CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)c1ccc(O)c2c1C[C@H]1C[C@H]3[C@H](N(C)C)C(O)=C(C(N)=O)C(=O)[C@@]3(O)C(O)=C1C2=O-expected279)
        • PASSED [ 29%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected280)
        • PASSED [ 29%]
      • 1 ms
        failed(CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C_[Br-]-expected281)
        • FAILED [ 29%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C.[Br-]-expected281])
          array([[6]]) != array([7])
          test_input = 'CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C.[Br-]'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(=O)c1cnccn1-expected282)
        • PASSED [ 29%]
      • 0 ms
        failed(CN(C)C(=O)Oc1ccc[n+](C)c1_[Br-]-expected283)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)C(=O)Oc1ccc[n+](C)c1.[Br-]-expected283])
          array([[1]]) != array([2])
          test_input = 'CN(C)C(=O)Oc1ccc[n+](C)c1.[Br-]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCc1nc(N)nc(N)c1-c1ccc(Cl)cc1-expected284)
        • PASSED [ 30%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@@H]1C[C@H]2[C@H](O)c1ccnc2ccc(OC)cc12-expected285)
        • PASSED [ 30%]
      • 0 ms
        passed(NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O-expected286)
        • PASSED [ 30%]
      • 0 ms
        failed(C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1_[Br-]-expected287)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1.[Br-]-expected287])
          array([[4]]) != array([5])
          test_input = 'C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1.[Br-]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(CN(CCN(C)C)c2ccccn2)cc1-expected288)
        • PASSED [ 30%]
      • 0 ms
        passed(c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2-expected289)
        • PASSED [ 30%]
      • 0 ms
        failed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C-expected290)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C-expected290])
          array([[1]]) != array([2])
          test_input = 'C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21-expected291)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21-expected291])
          array([[6]]) != array([7])
          test_input = 'CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1-expected292)
        • PASSED [ 30%]
      • 0 ms
        passed(CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected293)
        • PASSED [ 30%]
      • 0 ms
        passed(C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O-expected294)
        • PASSED [ 30%]
      • 0 ms
        passed(COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1_[Cl-]_[Cl-]_[Cl-]_[H+]_[H+]_[H+]-expected295)
        • PASSED [ 30%]
        • [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
          [14:08:11] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected296)
        • PASSED [ 30%]
      • 0 ms
        passed(Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1-expected297)
        • PASSED [ 30%]
      • 0 ms
        passed(CN1CCN2c3ccccc3Cc3ccccc3C2C1-expected298)
        • PASSED [ 30%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected299)
        • PASSED [ 30%]
      • 1 ms
        failed(CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1-expected300)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1-expected300])
          array([[17]]) != array([18])
          test_input = 'CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1'
          expected = array([18.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[17]]) == array([18])
          E Full diff:
          E - array([18])
          E ? ^
          E + array([[17]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected301)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected301])
          array([[12]]) != array([13])
          test_input = 'CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(FCOC(C(F)(F)F)C(F)(F)F-expected302)
        • PASSED [ 30%]
      • 0 ms
        passed(CC(=O)Nc1c(I)c(NC(C)=O)c(I)c(C(=O)[O-])c1I_[Na+]-expected303)
        • PASSED [ 30%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1-expected304)
        • PASSED [ 30%]
      • 0 ms
        passed(Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O-expected305)
        • PASSED [ 30%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N=C(N)N)[C@@H](O)[C@@H]3N=C(N)N)O[C@@H](C)[C@]2(O)C=O)O[C@@H](CO)[C@H](O)[C@H]1O-expected306)
        • PASSED [ 30%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1-expected307)
        • PASSED [ 30%]
      • 0 ms
        passed(Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C-expected308)
        • PASSED [ 30%]
      • 0 ms
        passed(C[C@H]1C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2CC[C@]3(O)C(=O)CO)[C@@]2(C)C=CC(=O)C=C12-expected309)
        • PASSED [ 30%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected310)
        • PASSED [ 30%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@H]43)[C@@H]1CC[C@@H]2O-expected311)
        • PASSED [ 30%]
      • 1 ms
        failed(CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O-expected312)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O-expected312])
          array([[4]]) != array([5])
          test_input = 'CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCc1cccnc1-expected313)
        • PASSED [ 30%]
      • 1 ms
        failed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C-expected314)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C-expected314])
          array([[0]]) != array([1])
          test_input = 'C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCC(O)c1cccc(O)c1-expected315)
        • PASSED [ 30%]
      • 0 ms
        passed(CC(CCc1ccccc1)NC(C)C(O)c1ccc(O)cc1-expected316)
        • PASSED [ 30%]
      • 0 ms
        passed(C[C@]12COC(=O)C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected317)
        • PASSED [ 30%]
      • 0 ms
        passed(O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1-expected318)
        • PASSED [ 30%]
      • 0 ms
        passed(CN1CCN2c3ncccc3Cc3ccccc3C2C1-expected319)
        • PASSED [ 30%]
      • 0 ms
        passed(Cc1ccnc2c1NC(=O)c1cccnc1N2C1CC1-expected320)
        • PASSED [ 30%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected321)
        • PASSED [ 30%]
      • 0 ms
        failed(CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1-expected322)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1-expected322])
          array([[10]]) != array([9])
          test_input = 'CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1-expected323)
        • PASSED [ 30%]
      • 0 ms
        passed(CC/C(=C(\\c1ccccc1)c1ccc(OCCN(C)C)cc1)c1ccccc1-expected324)
        • PASSED [ 30%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected325)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]-expected325])
          array([[5]]) != array([3])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1-expected326)
        • PASSED [ 30%]
      • 0 ms
        passed(Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1-expected327)
        • PASSED [ 30%]
      • 0 ms
        passed(NS(=O)(=O)Cc1noc2ccccc12-expected328)
        • PASSED [ 30%]
      • 1 ms
        passed(C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O-expected329)
        • PASSED [ 30%]
      • 1 ms
        failed(Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O_[Ca+2]-expected330)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O.[Ca+2]-expected330])
          array([[10]]) != array([7])
          test_input = 'Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O.[Ca+2]'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12_O_O-expected331)
        • FAILED [ 30%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O-expected331])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(Cc2nccc3cc(OC)c(OC)cc23)cc1OC-expected332)
        • PASSED [ 30%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O-expected333)
        • PASSED [ 30%]
      • 0 ms
        passed(CCOc1ccc(NC(C)=O)cc1-expected334)
        • PASSED [ 30%]
      • 0 ms
        passed(Nc1ccc(N=Nc2ccccc2)c(N)n1-expected335)
        • PASSED [ 30%]
      • 0 ms
        passed(CN(C)CCC(c1ccccc1)c1ccccn1-expected336)
        • PASSED [ 30%]
      • 0 ms
        passed(O=C1OC(c2ccc(O)cc2)(c2ccc(O)cc2)c2ccccc21-expected337)
        • PASSED [ 30%]
      • 0 ms
        passed(CC(COc1ccccc1)N(CCCl)Cc1ccccc1-expected338)
        • PASSED [ 30%]
      • 0 ms
        passed(CCCCC1C(=O)N(c2ccccc2)N(c2ccccc2)C1=O-expected339)
        • PASSED [ 31%]
      • 1 ms
        failed(CC(C)(C)NCC(O)c1ccc(O)c(CO)n1-expected340)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)c1ccc(O)c(CO)n1-expected340])
          array([[4]]) != array([5])
          test_input = 'CC(C)(C)NCC(O)c1ccc(O)c(CO)n1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2-expected341)
        • PASSED [ 31%]
      • 1 ms
        failed(CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12-expected342)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12-expected342])
          array([[2]]) != array([3])
          test_input = 'CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1-expected343)
        • PASSED [ 31%]
      • 0 ms
        failed(C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C-expected344)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C-expected344])
          array([[0]]) != array([1])
          test_input = 'C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345])
          array([[9]]) != array([8])
          test_input = 'CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Nc1[nH]c(=O)ncc1F-expected346)
        • PASSED [ 31%]
      • 0 ms
        passed(NC(N)=NCC1COC2(CCCCC2)O1-expected347)
        • PASSED [ 31%]
      • 0 ms
        failed(O=NN(CCCl)C(=O)NC1CCCCC1-expected348)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=NN(CCCl)C(=O)NC1CCCCC1-expected348])
          array([[4]]) != array([3])
          test_input = 'O=NN(CCCl)C(=O)NC1CCCCC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=S(=O)([O-])CCS_[Na+]-expected349)
        • PASSED [ 31%]
      • 1 ms
        failed(CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O-expected350)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O-expected350])
          array([[3]]) != array([2])
          test_input = 'CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](OC3OC5COC(c6cccs6)OC5C(O)C3O)[C@H]3COC(=O)[C@H]23)OCO4)cc(OC)c1O-expected351)
        • PASSED [ 31%]
      • 0 ms
        passed(S=P(N1CC1)(N1CC1)N1CC1-expected352)
        • PASSED [ 31%]
      • 1 ms
        passed(CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4cc3ccc4O)[C@H](O)c3ccc(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O-expected353)
        • PASSED [ 31%]
      • 0 ms
        passed(CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected354)
        • PASSED [ 31%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected355)
        • PASSED [ 31%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected356)
        • PASSED [ 31%]
      • 0 ms
        passed(CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1-expected357)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3CC[C@]12C-expected358)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12-expected359)
        • PASSED [ 31%]
      • 0 ms
        passed(CC1OC(O[C@@H]2C=C3CC[C@@H]4[C@H](CC[C@]5(C)[C@@H](c6ccc(=O)oc6)CC[C@]45O)[C@@]3(C)CC2)C(O)C(O)C1O-expected360)
        • PASSED [ 31%]
      • 0 ms
        passed(COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1-expected361)
        • PASSED [ 31%]
      • 0 ms
        passed(NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1-expected362)
        • PASSED [ 31%]
      • 0 ms
        failed(CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1-expected363)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1-expected363])
          array([[6]]) != array([8])
          test_input = 'CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(O)/C=C\\C(=O)O_O=C(O)/C=C\\C(=O)O_c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1-expected364)
        • PASSED [ 31%]
      • 0 ms
        passed(OCc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected365)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(Cl)(Cl)Cl-expected366)
        • PASSED [ 31%]
      • 0 ms
        passed(FC(F)(F)CCl-expected367)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(C)CO-expected368)
        • PASSED [ 31%]
      • 0 ms
        failed(CCC(C)(C)C-expected369)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(C)(C)C-expected369])
          array([[0]]) != array([1])
          test_input = 'CCC(C)(C)C', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O-expected370)
        • PASSED [ 31%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected371)
        • PASSED [ 31%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2cnc[nH]2)CC1-expected372)
        • PASSED [ 31%]
      • 1 ms
        failed(COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C-expected373)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C-expected373])
          array([[4]]) != array([5])
          test_input = 'COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(O)c1ccccc1O-expected374)
        • PASSED [ 31%]
      • 1 ms
        failed(CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12-expected375)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12-expected375])
          array([[4]]) != array([5])
          test_input = 'CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12-expected376)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12-expected376])
          array([[1]]) != array([2])
          test_input = 'CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@]12Cc3cn[nH]c3C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected377)
        • PASSED [ 31%]
      • 0 ms
        passed(O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O-expected378)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected379)
        • PASSED [ 31%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@]2(C)OC(=O)CC[C@@H]12-expected380)
        • PASSED [ 31%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2O-expected381)
        • PASSED [ 31%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCC(C)CC-expected383)
        • PASSED [ 31%]
      • 0 ms
        passed(CCC(C)CC-expected384)
        • PASSED [ 31%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2O-expected385)
        • PASSED [ 31%]
      • 0 ms
        passed(Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C-expected386)
        • PASSED [ 31%]
      • 0 ms
        passed(CC(C)NCC(O)COc1ccc(CC(N)=O)cc1-expected387)
        • PASSED [ 31%]
      • 0 ms
        passed(c1ccccc1-expected388)
        • PASSED [ 31%]
      • 0 ms
        failed(CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389)
        • FAILED [ 31%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389])
          array([[1]]) != array([3])
          test_input = 'CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1-expected390)
        • PASSED [ 31%]
      • 0 ms
        passed(OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1-expected391)
        • PASSED [ 31%]
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected392)
        • PASSED [ 31%]
      • 0 ms
        passed(CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1-expected393)
        • PASSED [ 31%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@]2(C=O)[C@@H](C(=O)CO)CC[C@@H]12-expected394)
        • PASSED [ 31%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCCC[C@H]1CN1CCCC1-expected395)
        • PASSED [ 31%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2ccccc2[C@H]1CN1CCCC1-expected396)
        • PASSED [ 32%]
      • 0 ms
        passed(O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1-expected397)
        • PASSED [ 32%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2sccc2[C@H]1CN1CCCC1-expected398)
        • PASSED [ 32%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O-expected399)
        • PASSED [ 32%]
      • 0 ms
        passed(Nc1nc(=S)c2[nH]cnc2[nH]1-expected400)
        • PASSED [ 32%]
      • 0 ms
        passed(Cc1ccc(S(=O)(=O)NC(=O)NN2CCCCCC2)cc1-expected401)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCNC(=O)NS(=O)(=O)c1ccc(C)cc1-expected402)
        • PASSED [ 32%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected403)
        • PASSED [ 32%]
      • 0 ms
        passed(Nc1nc(N)c2nc(-c3ccccc3)c(N)nc2n1-expected404)
        • PASSED [ 32%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O-expected405)
        • PASSED [ 32%]
      • 1 ms
        passed(CC(C)C1NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC1=O-expected406)
        • PASSED [ 32%]
      • 0 ms
        passed(COc1ccc(CCN(C)CCCC(C#N)(c2ccc(OC)c(OC)c2)C(C)C)cc1OC-expected407)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O-expected408)
        • PASSED [ 32%]
      • 0 ms
        passed(CCC(C)=O-expected409)
        • PASSED [ 32%]
      • 0 ms
        passed(C1CC1-expected410)
        • PASSED [ 32%]
      • 0 ms
        passed(NCCCN1c2ccccc2CCc2ccccc21-expected411)
        • PASSED [ 32%]
      • 0 ms
        passed(ClCCl-expected412)
        • PASSED [ 32%]
      • 0 ms
        passed(CCOCC-expected413)
        • PASSED [ 32%]
      • 0 ms
        passed(C=COC=C-expected414)
        • PASSED [ 32%]
      • 0 ms
        passed(FC(F)OC(F)(F)C(F)Cl-expected415)
        • PASSED [ 32%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2[nH]cnc2[C@H]1CN1CCCC1-expected416)
        • PASSED [ 32%]
      • 0 ms
        passed(CC1(C)CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected417)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected418)
        • PASSED [ 32%]
      • 0 ms
        passed(O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected419)
        • PASSED [ 32%]
      • 0 ms
        passed(O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O-expected420)
        • PASSED [ 32%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCO-expected421)
        • PASSED [ 32%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCCCO-expected422)
        • PASSED [ 32%]
      • 1 ms
        failed(COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O-expected423)
        • FAILED [ 32%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O-expected423])
          array([[1]]) != array([2])
          test_input = 'COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](N=[N+]=[N-])[C@@H](CO)O2)c(=O)[nH]c1=O-expected424)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected425)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected426)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected427)
        • PASSED [ 32%]
      • 0 ms
        passed(C=CCC1(CC=C)C(=O)NC(=O)NC1=O-expected428)
        • PASSED [ 32%]
      • 0 ms
        passed(NC12CC3CC(CC(C3)C1)C2_[Cl-]_[H+]-expected429)
        • PASSED [ 32%]
        • [14:08:12] WARNING: not removing hydrogen atom without neighbors
          [14:08:12] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected430)
        • PASSED [ 32%]
      • 0 ms
        passed(CCC1(CCC(C)C)C(=O)NC(=O)NC1=O-expected431)
        • PASSED [ 32%]
      • 0 ms
        passed(CC(N)Cc1ccccc1-expected432)
        • PASSED [ 32%]
      • 0 ms
        passed(CCO-expected433)
        • PASSED [ 32%]
      • 0 ms
        passed(CCc1ccccc1-expected434)
        • PASSED [ 32%]
      • 1 ms
        failed(CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2-expected435)
        • FAILED [ 32%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2-expected435])
          array([[2]]) != array([3])
          test_input = 'CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436)
        • FAILED [ 32%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436])
          array([[2]]) != array([1])
          test_input = 'CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C=COCC(F)(F)F-expected437)
        • PASSED [ 32%]
      • 0 ms
        passed(FC(F)(F)C(Cl)Br-expected438)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCCCC-expected439)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCCC-expected440)
        • PASSED [ 32%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1C-expected441)
        • PASSED [ 32%]
      • 0 ms
        passed(CCn1ccc(=O)c(O)c1C-expected442)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCn1ccc(=O)c(O)c1C-expected443)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected444)
        • PASSED [ 32%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected445)
        • PASSED [ 32%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1CCCO-expected446)
        • PASSED [ 32%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CC-expected447)
        • PASSED [ 32%]
      • 0 ms
        passed(CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1-expected448)
        • PASSED [ 32%]
      • 0 ms
        passed(Cc1cc(=O)n(-c2ccccc2)n1C-expected449)
        • PASSED [ 32%]
      • 0 ms
        passed(CN1CCc2cccc3c2[C@H]1Cc1ccc(O)c(O)c1-3-expected450)
        • PASSED [ 32%]
      • 1 ms
        failed(COC(=O)C1=CCCN(C)C1-expected451)
        • FAILED [ 32%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)C1=CCCN(C)C1-expected451])
          array([[1]]) != array([2])
          test_input = 'COC(=O)C1=CCCN(C)C1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1-expected452)
        • PASSED [ 32%]
      • 1 ms
        failed(CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1_[Cl-]_[H+]-expected453)
        • FAILED [ 33%]
        • [14:08:12] WARNING: not removing hydrogen atom without neighbors
          [14:08:12] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]-expected453])
          array([[8]]) != array([9])
          test_input = 'CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(O=C(CCCN1CCC(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected454)
        • PASSED [ 33%]
      • 1 ms
        failed(CCOC(=O)c1ccc(N)cc1-expected455)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)c1ccc(N)cc1-expected455])
          array([[2]]) != array([3])
          test_input = 'CCOC(=O)c1ccc(N)cc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O-expected456)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O-expected456])
          array([[6]]) != array([7])
          test_input = 'CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2_O=S(=O)(O)O-expected457)
        • PASSED [ 33%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CC2C=CC1C2-expected458)
        • PASSED [ 33%]
      • 0 ms
        passed(CN1C(=O)NC(=O)C(C)(C2=CCCCC2)C1=O-expected459)
        • PASSED [ 33%]
      • 1 ms
        failed(CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O-expected460)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O-expected460])
          array([[11]]) != array([12])
          test_input = 'CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(FC(F)OC(Cl)C(F)(F)F-expected461)
        • PASSED [ 33%]
      • 0 ms
        passed(C=CCC1(C(C)C#CCC)C(=O)NC(=O)N(C)C1=O-expected462)
        • PASSED [ 33%]
      • 0 ms
        passed(COC(F)(F)C(Cl)Cl-expected463)
        • PASSED [ 33%]
      • 0 ms
        passed(CC1CCCC1-expected464)
        • PASSED [ 33%]
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1-expected465)
        • PASSED [ 33%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21-expected466)
        • PASSED [ 33%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1-expected467)
        • PASSED [ 33%]
      • 1 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected468)
        • PASSED [ 33%]
      • 1 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CCCC1-expected469)
        • PASSED [ 33%]
      • 1 ms
        failed(COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected470)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected470])
          array([[4]]) != array([5])
          test_input = 'COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1CN=C(c2ccccn2)c2cc(Br)ccc2N1-expected471)
        • PASSED [ 33%]
      • 1 ms
        failed(CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1-expected472)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1-expected472])
          array([[5]]) != array([6])
          test_input = 'CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)CCc1c[nH]c2ccc(O)cc12-expected473)
        • PASSED [ 33%]
      • 1 ms
        failed(CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1-expected474)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1-expected474])
          array([[3]]) != array([4])
          test_input = 'CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(O=C(NCc1ccccc1)OCCO-expected475)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(NCc1ccccc1)OCCO-expected475])
          array([[4]]) != array([5])
          test_input = 'O=C(NCc1ccccc1)OCCO', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected476)
        • PASSED [ 33%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2C)n(C)c1=O-expected477)
        • PASSED [ 33%]
      • 0 ms
        passed(C=C(C)[C@@H]1CCC(C)=CC1c1c(O)cc(CCCCC)cc1O-expected478)
        • PASSED [ 33%]
      • 0 ms
        passed(CCC(C)C(CC)C(=O)NC(N)=O-expected479)
        • PASSED [ 33%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C=Cc2ccccc21-expected480)
        • PASSED [ 33%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCNC1)c1ccccc1S2-expected481)
        • PASSED [ 33%]
      • 0 ms
        passed(Cn1c(=O)[nH]c2ncn(C)c2c1=O-expected482)
        • PASSED [ 33%]
      • 0 ms
        passed(CCCCC-expected483)
        • PASSED [ 33%]
      • 0 ms
        passed(CCCO-expected484)
        • PASSED [ 33%]
      • 0 ms
        passed(CC(C)=O-expected485)
        • PASSED [ 33%]
      • 1 ms
        failed(CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected486)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected486])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected487)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected487])
          array([[6]]) != array([7])
          test_input = 'CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CC[C@@H](O)C1-expected488)
        • PASSED [ 33%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected489)
        • PASSED [ 33%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected490)
        • PASSED [ 33%]
      • 0 ms
        passed(CSc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected491)
        • PASSED [ 33%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected492)
        • PASSED [ 33%]
      • 0 ms
        passed(COc1cccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)c1-expected493)
        • PASSED [ 33%]
      • 1 ms
        failed(CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected494)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected494])
          array([[5]]) != array([4])
          test_input = 'CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected495)
        • PASSED [ 33%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected496)
        • PASSED [ 33%]
      • 1 ms
        failed(CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497)
        • FAILED [ 33%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497])
          array([[7]]) != array([8])
          test_input = 'CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Nn1cnc2cc3ccccc3cc2c1=O-expected498)
        • PASSED [ 33%]
      • 0 ms
        passed(OC(O)C(Cl)(Cl)Cl-expected499)
        • PASSED [ 33%]
      • 0 ms
        passed(CN=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected500)
        • PASSED [ 33%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc21-expected501)
        • PASSED [ 33%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2Sc2ccc(Cl)cc21-expected502)
        • PASSED [ 33%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2o1-expected503)
        • PASSED [ 33%]
      • 0 ms
        passed(C[N+](C)(C)CCO-expected504)
        • PASSED [ 33%]
      • 0 ms
        passed(CN1C(=O)CC(=O)N(c2ccccc2)c2cc(Cl)ccc21-expected505)
        • PASSED [ 33%]
      • 0 ms
        passed(O=C(O)CNC(=O)c1ccccc1O-expected506)
        • PASSED [ 33%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)(=O)=O)cc21-expected507)
        • PASSED [ 33%]
      • 0 ms
        passed(FC(Br)C(F)(F)F-expected508)
        • PASSED [ 33%]
      • 0 ms
        passed(Cn1cnc2c1c(=O)[nH]c(=O)n2C-expected509)
        • PASSED [ 34%]
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=S)NC1=O-expected510)
        • PASSED [ 34%]
      • 0 ms
        passed(Cc1ccccc1-expected511)
        • PASSED [ 34%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2-expected512)
        • PASSED [ 34%]
      • 1 ms
        failed(CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1-expected513)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1-expected513])
          array([[5]]) != array([4])
          test_input = 'CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccccc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected514)
        • PASSED [ 34%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(S(C)(=O)=O)cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected515)
        • PASSED [ 34%]
      • 0 ms
        passed(CC(C)[C@@H](CN1CCCC1)N(C)C(=O)Cc1ccc(Cl)c(Cl)c1-expected516)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)[C@@H](CN1CCCC1)c1ccccc1-expected517)
        • PASSED [ 34%]
      • 0 ms
        passed(Cc1cc(N/C(O)=C2\\C(=O)c3ccccc3S(=O)(=O)N2C)no1-expected518)
        • PASSED [ 34%]
      • 0 ms
        passed(C=CCN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected519)
        • PASSED [ 34%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21-expected520)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected521)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccc(Cl)cc21-expected522)
        • PASSED [ 34%]
      • 0 ms
        failed(O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1-expected523)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1-expected523])
          array([[2]]) != array([1])
          test_input = 'O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected524)
        • PASSED [ 34%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected525)
        • PASSED [ 34%]
      • 0 ms
        failed(COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C-expected526)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C-expected526])
          array([[3]]) != array([5])
          test_input = 'COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected527)
        • PASSED [ 34%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CC1CC1-expected528)
        • PASSED [ 34%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2-expected529)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C)CCO-expected530)
        • PASSED [ 34%]
      • 1 ms
        failed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1_[Cl-]_[H+]-expected531)
        • FAILED [ 34%]
        • [14:08:12] WARNING: not removing hydrogen atom without neighbors
          [14:08:12] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]-expected531])
          array([[3]]) != array([4])
          test_input = 'CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(ClC=C(Cl)Cl-expected532)
        • PASSED [ 34%]
      • 0 ms
        passed(ClC(Cl)Cl-expected533)
        • PASSED [ 34%]
      • 0 ms
        passed(CNCCc1ccccn1-expected534)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected535)
        • PASSED [ 34%]
      • 0 ms
        passed(NCCc1nccs1-expected536)
        • PASSED [ 34%]
      • 0 ms
        passed(NCCc1nc(-c2ccccc2)cs1-expected537)
        • PASSED [ 34%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected538)
        • PASSED [ 34%]
      • 0 ms
        passed(Cc1cccc(C)c1-expected539)
        • PASSED [ 34%]
      • 0 ms
        failed(CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1-expected540)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1-expected540])
          array([[1]]) != array([2])
          test_input = 'CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cnc(N/C(O)=C2/C(=O)c3ccccc3S(=O)(=O)N2C)s1-expected541)
        • PASSED [ 34%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)C=C[C@H]3[C@H]1C5-expected542)
        • PASSED [ 34%]
      • 0 ms
        passed(O=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected543)
        • PASSED [ 34%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21-expected544)
        • PASSED [ 34%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21-expected545)
        • PASSED [ 34%]
      • 0 ms
        passed(CN1/C(=C(/O)Nc2ccccn2)C(=O)c2ccccc2S1(=O)=O-expected546)
        • PASSED [ 34%]
      • 0 ms
        passed(CS(=O)(=O)O_Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1-expected547)
        • PASSED [ 34%]
      • 1 ms
        failed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected548)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected548])
          array([[7]]) != array([9])
          test_input = 'COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCCCN1c2ccccc2CCc2ccccc21-expected549)
        • PASSED [ 34%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected550)
        • PASSED [ 34%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)CC[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected551)
        • PASSED [ 34%]
      • 0 ms
        passed(CN1CCC23c4c5ccc(O)c4OC2C(O)CCC3C1C5-expected552)
        • PASSED [ 34%]
      • 0 ms
        passed(CN(C)CCOC(c1ccccc1)c1ccccc1-expected553)
        • PASSED [ 34%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected554)
        • PASSED [ 34%]
      • 0 ms
        passed(CC(CN1CCN(CCOCCO)CC1)CN1c2ccccc2Sc2ccccc21-expected555)
        • PASSED [ 34%]
      • 0 ms
        failed(COC(=O)c1ccc(C(=O)OC)cc1-expected556)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)c1ccc(C(=O)OC)cc1-expected556])
          array([[2]]) != array([4])
          test_input = 'COC(=O)c1ccc(C(=O)OC)cc1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1ccccc1C-expected557)
        • PASSED [ 34%]
      • 0 ms
        passed(Cc1ccc(C)cc1-expected558)
        • PASSED [ 34%]
      • 0 ms
        passed(CC(C)O-expected559)
        • PASSED [ 34%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected560)
        • PASSED [ 34%]
      • 0 ms
        failed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected561)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected561])
          array([[9]]) != array([11])
          test_input = 'CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1', expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1-expected562)
        • PASSED [ 34%]
      • 1 ms
        failed(CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected563)
        • FAILED [ 34%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected563])
          array([[9]]) != array([10])
          test_input = 'CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CCN(CC(=O)N2c3ccccc3C(=O)Nc3cccnc32)CC1-expected564)
        • PASSED [ 34%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@@H](C)CN1CCCC1)c1ccccc1S2-expected565)
        • PASSED [ 34%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1-expected566)
        • PASSED [ 35%]
      • 0 ms
        failed(CC(C)(C)NCC(O)c1ccc(O)c(CO)c1-expected567)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)c1ccc(O)c(CO)c1-expected567])
          array([[4]]) != array([5])
          test_input = 'CC(C)(C)NCC(O)c1ccc(O)c(CO)c1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CN1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected568)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1-expected569)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1-expected570)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1-expected571)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCN(CCO)C[C@@H]1CN1CC[C@@H](O)C1-expected572)
        • PASSED [ 35%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2COc2ccccc21_[Cl-]_[H+]-expected573)
        • PASSED [ 35%]
        • [14:08:13] WARNING: not removing hydrogen atom without neighbors
          [14:08:13] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1_O=C(O)CCC(=O)O-expected574)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(CCCN1CC=C(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected575)
        • PASSED [ 35%]
      • 0 ms
        passed(C/C=C(\\CC)C(=O)NC(N)=O-expected576)
        • PASSED [ 35%]
      • 0 ms
        failed(CCC(C)(CC)OC(N)=O-expected577)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(C)(CC)OC(N)=O-expected577])
          array([[3]]) != array([4])
          test_input = 'CCC(C)(CC)OC(N)=O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2-expected578)
        • PASSED [ 35%]
      • 0 ms
        passed(CCc1ccccc1-n1c(C)nc2ccccc2c1=O-expected579)
        • PASSED [ 35%]
      • 0 ms
        failed(CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(C#CC(O)(/C=C/Cl)CC-expected581)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#CC(O)(/C=C/Cl)CC-expected581])
          array([[2]]) != array([3])
          test_input = 'C#CC(O)(/C=C/Cl)CC', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(C#CC1(OC(N)=O)CCCCC1-expected582)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#CC1(OC(N)=O)CCCCC1-expected582])
          array([[1]]) != array([3])
          test_input = 'C#CC1(OC(N)=O)CCCCC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCCc1ccccn1-expected583)
        • PASSED [ 35%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected584)
        • PASSED [ 35%]
      • 0 ms
        passed(NCCc1nccs1-expected585)
        • PASSED [ 35%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2c[nH]cn2)CC1-expected586)
        • PASSED [ 35%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected587)
        • PASSED [ 35%]
      • 1 ms
        passed(CC[C@H](NC(=O)c1c(OCCCN(C)C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected588)
        • PASSED [ 35%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected589)
        • PASSED [ 35%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected590)
        • PASSED [ 35%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected591)
        • PASSED [ 35%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccn2)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected592)
        • PASSED [ 35%]
      • 0 ms
        passed(C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1-expected593)
        • PASSED [ 35%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC1=O-expected594)
        • PASSED [ 35%]
      • 0 ms
        passed(CCc1ccc2c(c1)N(CC(C)CN(C)C)c1ccccc1S2-expected595)
        • PASSED [ 35%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected596)
        • PASSED [ 35%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected597)
        • PASSED [ 35%]
      • 0 ms
        passed(CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected598)
        • PASSED [ 35%]
      • 0 ms
        passed(COc1cc2c3c(c1O)C1(C=CC(=O)C=C1)CC3N(C)CC2-expected599)
        • PASSED [ 35%]
      • 0 ms
        passed(CCC1(c2ccccc2)CCC(=O)NC1=O-expected600)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected601)
        • PASSED [ 35%]
      • 0 ms
        passed(Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12-expected602)
        • PASSED [ 35%]
      • 0 ms
        passed(Cc1nccc2c1[nH]c1ccccc12-expected603)
        • PASSED [ 35%]
      • 0 ms
        failed(O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1-expected604)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1-expected604])
          array([[7]]) != array([6])
          test_input = 'O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCNCc1c(CSC)cnc(C)c1O-expected605)
        • PASSED [ 35%]
      • 0 ms
        passed(CN1/C(=C(\\O)Nc2ccccn2)C(=O)c2sccc2S1(=O)=O-expected606)
        • PASSED [ 35%]
      • 1 ms
        failed(CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected607)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected607])
          array([[8]]) != array([9])
          test_input = 'CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)C1CCCC[C@H]1N1CCCC1-expected608)
        • PASSED [ 35%]
      • 1 ms
        failed(CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected609)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected609])
          array([[2]]) != array([4])
          test_input = 'CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(C#CCC1(OC(N)=O)CCCCC1-expected610)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#CCC1(OC(N)=O)CCCCC1-expected610])
          array([[2]]) != array([3])
          test_input = 'C#CCC1(OC(N)=O)CCCCC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1_[Cl-]_[Cl-]_[H+]_[H+]-expected611)
        • PASSED [ 35%]
        • [14:08:13] WARNING: not removing hydrogen atom without neighbors
          [14:08:13] WARNING: not removing hydrogen atom without neighbors
          [14:08:13] WARNING: not removing hydrogen atom without neighbors
          [14:08:13] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@H]4[C@@H](C2)N(C)CC[C@]314-expected612)
        • PASSED [ 35%]
      • 0 ms
        failed(CCC(O)(COC(N)=O)c1ccccc1-expected613)
        • FAILED [ 35%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(O)(COC(N)=O)c1ccccc1-expected613])
          array([[4]]) != array([5])
          test_input = 'CCC(O)(COC(N)=O)c1ccccc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected614)
        • PASSED [ 35%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccccc21-expected615)
        • PASSED [ 35%]
      • 0 ms
        passed(CNC1(c2ccccc2Cl)CCCCC1=O-expected616)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2[nH]1-expected617)
        • PASSED [ 35%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected618)
        • PASSED [ 35%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected619)
        • PASSED [ 35%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected620)
        • PASSED [ 35%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected621)
        • PASSED [ 35%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected622)
        • PASSED [ 35%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected623)
        • PASSED [ 36%]
      • 0 ms
        passed(CN(C)c1cc(-c2n[nH]c(N)n2)ccn1-expected624)
        • PASSED [ 36%]
      • 0 ms
        passed(Cn1c(=O)c2nc[nH]c2n(C)c1=O-expected625)
        • PASSED [ 36%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1-expected626)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected627)
        • PASSED [ 36%]
      • 0 ms
        passed(CCN(CC)CC(=O)Nc1c(C)cccc1C-expected628)
        • PASSED [ 36%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2Cl)=NC1O-expected629)
        • PASSED [ 36%]
      • 0 ms
        passed(CC(C)N1CCC(N(C(=O)Cc2ccccc2)c2ccc(Cl)cc2)CC1-expected630)
        • PASSED [ 36%]
      • 0 ms
        failed(CN(C)CCOC(=O)COc1ccc(Cl)cc1-expected631)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)CCOC(=O)COc1ccc(Cl)cc1-expected631])
          array([[6]]) != array([7])
          test_input = 'CN(C)CCOC(=O)COc1ccc(Cl)cc1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl-expected632)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CCN=C(c2ccccc2)c2cc(Cl)ccc21-expected633)
        • PASSED [ 36%]
      • 0 ms
        failed(CCCC(C)(COC(N)=O)COC(N)=O-expected634)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCC(C)(COC(N)=O)COC(N)=O-expected634])
          array([[6]]) != array([8])
          test_input = 'CCCC(C)(COC(N)=O)COC(N)=O', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCCn1ncc2cc(Cl)c(Cl)cc21-expected635)
        • PASSED [ 36%]
      • 0 ms
        passed(Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1-expected636)
        • PASSED [ 36%]
      • 0 ms
        passed(CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1-expected637)
        • PASSED [ 36%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected638)
        • PASSED [ 36%]
      • 0 ms
        failed(CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1-expected639)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1-expected639])
          array([[4]]) != array([5])
          test_input = 'CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCCCNCCSP(=O)(O)O-expected640)
        • PASSED [ 36%]
      • 0 ms
        passed(COc1cc(CCN)cc(OC)c1OC-expected641)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21-expected642)
        • PASSED [ 36%]
      • 0 ms
        passed(CN[C@@H](C)Cc1ccccc1-expected643)
        • PASSED [ 36%]
      • 0 ms
        passed(Cc1ccccc1-n1c(C)nc2ccccc2c1=O-expected644)
        • PASSED [ 36%]
      • 0 ms
        failed(COc1ccccc1OCC(O)COC(N)=O-expected645)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COc1ccccc1OCC(O)COC(N)=O-expected645])
          array([[6]]) != array([7])
          test_input = 'COc1ccccc1OCC(O)COC(N)=O', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected646)
        • PASSED [ 36%]
      • 0 ms
        passed(COc1ccc2c(c1)N(C[C@H](C)CN(C)C)c1ccccc1S2-expected647)
        • PASSED [ 36%]
      • 0 ms
        failed(C#CC(C)(O)CC-expected648)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#CC(C)(O)CC-expected648])
          array([[1]]) != array([2])
          test_input = 'C#CC(C)(O)CC', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COC(=O)C(c1ccccc1)C1CCCCN1-expected649)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)C(c1ccccc1)C1CCCCN1-expected649])
          array([[3]]) != array([4])
          test_input = 'COC(=O)C(c1ccccc1)C1CCCCN1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC1(CC)C(=O)NCC(C)C1=O-expected650)
        • PASSED [ 36%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)[C@@H](O)[C@H](O)[C@H]2O)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected651)
        • PASSED [ 36%]
      • 0 ms
        passed(Nc1ccc(C(=O)O)c(O)c1-expected652)
        • PASSED [ 36%]
      • 0 ms
        passed(Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1-expected653)
        • PASSED [ 36%]
      • 0 ms
        passed(CN(C)N/N=C1/N=CN=C1C(N)=O-expected654)
        • PASSED [ 36%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(C)=O)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected655)
        • PASSED [ 36%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1CC(=O)N(c2ccccc2)c2cc(Cl)ccc2N1-expected657)
        • PASSED [ 36%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccccc21-expected658)
        • PASSED [ 36%]
      • 0 ms
        passed(C[C@@H](CN1CC(=O)NC(=O)C1)N1CC(=O)NC(=O)C1-expected659)
        • PASSED [ 36%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2_O=C(O)/C=C\\C(=O)O-expected660)
        • PASSED [ 36%]
      • 0 ms
        passed(Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1-expected661)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(O)C=C[C@H]3[C@H]1C5-expected662)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CC=C(c2ccccc2)CC1-expected663)
        • PASSED [ 36%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected664)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1CCC[C@H]1c1cccnc1-expected665)
        • PASSED [ 36%]
      • 0 ms
        failed(O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1-expected666)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1-expected666])
          array([[2]]) != array([1])
          test_input = 'O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1-expected667)
        • PASSED [ 36%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2CCc2ccccc21-expected668)
        • PASSED [ 36%]
      • 0 ms
        passed(Cc1ccccc1C(OCCN(C)C)c1ccccc1-expected669)
        • PASSED [ 36%]
      • 0 ms
        passed(COc1ccc2c(c1)[C@]13CCCC[C@@H]1[C@H](C2)N(C)CC3-expected670)
        • PASSED [ 36%]
      • 0 ms
        passed(CN1C[C@H](C(=O)N[C@]2(C)O[C@@]3(O)[C@@H]4CCCN4C(=O)[C@H](Cc4ccccc4)N3C2=O)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected671)
        • PASSED [ 36%]
      • 0 ms
        failed(CCN(CC)C(=S)SSC(=S)N(CC)CC-expected672)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)C(=S)SSC(=S)N(CC)CC-expected672])
          array([[4]]) != array([7])
          test_input = 'CCN(CC)C(=S)SSC(=S)N(CC)CC', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673])
          array([[0]]) != array([1])
          test_input = 'O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674])
          array([[9]]) != array([10])
          test_input = 'CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC[C@@H](CO)NCCN[C@@H](CC)CO-expected675)
        • PASSED [ 36%]
      • 1 ms
        failed(CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC-expected676)
        • FAILED [ 36%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC-expected676])
          array([[9]]) != array([10])
          test_input = 'CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O-expected677)
        • PASSED [ 36%]
      • 0 ms
        passed(CNCC(O)c1ccc(O)c(O)c1-expected678)
        • PASSED [ 36%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)CC(O)(C(=O)CO)CC3O-expected679)
        • PASSED [ 37%]
      • 0 ms
        passed(C=CCSCC(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)[O-]_[Na+]-expected680)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O-expected681)
        • PASSED [ 37%]
      • 1 ms
        failed(CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected682)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected682])
          array([[5]]) != array([8])
          test_input = 'CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected684)
        • PASSED [ 37%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NC(C(=O)O)N2CCN(CCO)CC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected685)
        • PASSED [ 37%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O[C@H]2O[C@H](CO)[C@@H](N)[C@H](O)[C@H]2O)O[C@H]2C[C@@H](N)[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N)C[C@@H]3N)O[C@@H]2[C@@H]1O-expected686)
        • PASSED [ 37%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected687)
        • PASSED [ 37%]
      • 0 ms
        passed(CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1-expected688)
        • PASSED [ 37%]
      • 0 ms
        passed(CO[C@H]1[C@@H](O)[C@H](N)[C@@H](O[C@H]2O[C@H](C(C)N)CC[C@H]2N)[C@H](O)[C@@H]1N(C)C(=O)CN-expected689)
        • PASSED [ 37%]
      • 1 ms
        failed(C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690])
          array([[7]]) != array([6])
          test_input = 'C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected691)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected691])
          array([[6]]) != array([9])
          test_input = 'CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected692)
        • PASSED [ 37%]
      • 0 ms
        passed(NC(CO)C(=O)NNCc1ccc(O)c(O)c1O-expected693)
        • PASSED [ 37%]
      • 0 ms
        passed(CC(C)COCC(CN(Cc1ccccc1)c1ccccc1)N1CCCC1-expected694)
        • PASSED [ 37%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@H]1C-expected695)
        • PASSED [ 37%]
      • 0 ms
        passed(NCCC(O)CNC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O-expected696)
        • PASSED [ 37%]
      • 0 ms
        failed(CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1-expected697)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1-expected697])
          array([[4]]) != array([5])
          test_input = 'CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698])
          array([[6]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699])
          array([[6]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(O)cccc1C3=O-expected700)
        • PASSED [ 37%]
      • 1 ms
        failed(NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701])
          array([[9]]) != array([10])
          test_input = 'NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1-expected702)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1-expected703)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1-expected704)
        • PASSED [ 37%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1-expected706)
        • PASSED [ 37%]
      • 0 ms
        passed(NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1-expected707)
        • PASSED [ 37%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1_[Na+]-expected708)
        • PASSED [ 37%]
      • 1 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1-expected709)
        • PASSED [ 37%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1-expected710)
        • PASSED [ 37%]
      • 1 ms
        failed(Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1-expected711)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1-expected711])
          array([[11]]) != array([13])
          test_input = 'Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712])
          array([[7]]) != array([8])
          test_input = 'CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected713)
        • PASSED [ 37%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected714)
        • PASSED [ 37%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1-expected715)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1-expected716)
        • PASSED [ 37%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1-expected717)
        • PASSED [ 37%]
      • 0 ms
        passed(O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12-expected718)
        • PASSED [ 37%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CS/C=C\\C#N)[C@H]2SC1-expected719)
        • PASSED [ 37%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1-expected720)
        • PASSED [ 37%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@H]12)c1csc(N)n1-expected721)
        • PASSED [ 37%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSCC#N)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected722)
        • PASSED [ 37%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected723)
        • PASSED [ 37%]
      • 0 ms
        passed(CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1-expected724)
        • PASSED [ 37%]
      • 0 ms
        passed(O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12-expected725)
        • PASSED [ 37%]
      • 0 ms
        passed(NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12-expected726)
        • PASSED [ 37%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected727)
        • PASSED [ 37%]
      • 0 ms
        passed(CN(C)CCn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3csc(N)n3)[C@H]2SC1-expected728)
        • PASSED [ 37%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729)
        • FAILED [ 37%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1-expected730)
        • PASSED [ 37%]
      • 0 ms
        passed(COCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)/C(=N\\OC)c3csc(N)n3)[C@H]2SC1_[Na+]-expected731)
        • PASSED [ 37%]
      • 0 ms
        passed(C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1_O-expected732)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)[C@H]2SC1-expected733)
        • PASSED [ 37%]
      • 0 ms
        passed(COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1-expected734)
        • PASSED [ 37%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1-expected735)
        • PASSED [ 37%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cn3nnc(C)n3)CS[C@H]12)c1csc(N)n1-expected736)
        • PASSED [ 38%]
      • 0 ms
        passed(O=C(Cn1cnnn1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nncs3)CS[C@H]12-expected737)
        • PASSED [ 38%]
      • 0 ms
        passed(Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1_O_O-expected738)
        • PASSED [ 38%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739])
          array([[8]]) != array([9])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(/C=C/Sc3n[nH]c(=O)c(=O)n3CC=O)CS[C@H]12)c1csc(N)n1-expected740)
        • PASSED [ 38%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741])
          array([[7]]) != array([8])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1-expected742)
        • PASSED [ 38%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743])
          array([[7]]) != array([8])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected744)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected744])
          array([[9]]) != array([12])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12-expected745)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12-expected745])
          array([[13]]) != array([16])
          test_input = 'COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12'
          expected = array([16.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([16])
          E Full diff:
          E - array([16])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1-expected746)
        • PASSED [ 38%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1_[Na+]-expected747)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1.[Na+]-expected747])
          array([[5]]) != array([6])
          test_input = 'CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1.[Na+]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1_O_O-expected748)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O-expected748])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749])
          array([[9]]) != array([10])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)C1=C(O)[C@@]2(O)C(=O)c3c(c(C)c4ccc(C)c(O)c4c3O)C[C@H]2[C@@H](N)C1=O-expected751)
        • PASSED [ 38%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(OC)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected752)
        • PASSED [ 38%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](O)[C@@H](O)[C@H]2O)N(C)C1-expected753)
        • PASSED [ 38%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1-expected754)
        • PASSED [ 38%]
      • 0 ms
        passed(COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1-expected755)
        • PASSED [ 38%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected756)
        • PASSED [ 38%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O-expected757)
        • PASSED [ 38%]
      • 1 ms
        passed(CC=CCC(C)C(O)C1C(=O)NC(CC)C(=O)N(C)CC(=O)N(C)C(CC(C)C)C(=O)NC(C(C)C)C(=O)N(C)C(CC(C)C)C(=O)NC(C)C(=O)NC(C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(C(C)C)C(=O)N1C-expected758)
        • PASSED [ 38%]
      • 1 ms
        passed(Cc1c2oc3c(C)ccc(C(=O)NC4C(=O)NC(C(C)C)C(=O)N5CCCC5C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC4C)c3nc-2c(C(=O)NC2C(=O)NC(C(C)C)C(=O)N3CCCC3C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC2C)c(N)c1=O-expected759)
        • PASSED [ 38%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O-expected761)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O-expected761])
          array([[11]]) != array([12])
          test_input = 'CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NCC1CCC(N)C(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)O1-expected762)
        • PASSED [ 38%]
      • 0 ms
        passed(Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected763)
        • PASSED [ 38%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@@H]3[C@@H](O)[C@H](O)[C@@H](N=C(N)N)[C@H](O)[C@H]3N=C(N)N)O[C@@H](C)[C@]2(O)CO)O[C@@H](CO)[C@H](O)[C@H]1O-expected764)
        • PASSED [ 38%]
      • 0 ms
        passed(COc1ccc(-c2cc(=O)c3c(O)cc(O[C@@H]4O[C@H](CO[C@@H]5O[C@@H](C)[C@H](O)[C@@H](O)[C@H]5O)[C@@H](O)[C@H](O)[C@H]4O)cc3o2)cc1O-expected765)
        • PASSED [ 38%]
      • 1 ms
        failed(CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1-expected766)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1-expected766])
          array([[5]]) != array([9])
          test_input = 'CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC-expected767)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC-expected767])
          array([[10]]) != array([12])
          test_input = 'CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCN(CCO)c1nc(N2CCCCC2)c2nc(N(CCO)CCO)nc(N3CCCCC3)c2n1-expected768)
        • PASSED [ 38%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)[C@@H]2N[C@@H](COCCOC)O[C@H]([C@H]2C)[C@]1(C)O-expected769)
        • PASSED [ 38%]
      • 1 ms
        failed(CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C-expected770)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C-expected770])
          array([[8]]) != array([13])
          test_input = 'CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C-expected771)
        • PASSED [ 38%]
      • 0 ms
        passed(CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21_[Cl]-expected772)
        • PASSED [ 38%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O-expected773)
        • PASSED [ 38%]
      • 2 ms
        passed(CCC(C)[C@H]1O[C@]2(CC[C@@H]1C)CC1C[C@@H](C/C=C(\\C)[C@@H](O[C@H]3C[C@H](OC)[C@@H](OC4C[C@H](OC)[C@@H](O)[C@H](C)O4)[C@H](C)O3)[C@@H](C)/C=C/C=C3\\CO[C@@H]4[C@H](O)C(C)=C[C@@H](C(=O)O1)[C@]34O)O2_CO[C@H]1CC(O[C@H]2[C@H](C)O[C@@H](O[C@@H]3/C(C)=C/C[C@@H]4CC(C[C@]5(CC[C@H](C)[C@@H](C(C)C)O5)O4)OC(=O)[C@@H]4C=C(C)[C@@H](O)[C@H]5OC/C(=C\\C=C\\[C@@H]3C)[C@]54O)C[C@@H]2OC)O[C@@H](C)[C@@H]1O-expected774)
        • PASSED [ 38%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@](O)(C(=O)CO)C[C@H]3OC1CC(N)CC(C)O1-expected775)
        • PASSED [ 38%]
      • 1 ms
        passed(CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O-expected776)
        • PASSED [ 38%]
      • 0 ms
        passed(CCNCC(O)c1cccc(O)c1-expected777)
        • PASSED [ 38%]
      • 1 ms
        failed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl-expected778)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl-expected778])
          array([[4]]) != array([6])
          test_input = 'CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected779)
        • PASSED [ 38%]
      • 0 ms
        passed(CC(C)c1ccccc1OCC1=NCCN1-expected780)
        • PASSED [ 38%]
      • 0 ms
        passed(CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected781)
        • PASSED [ 38%]
      • 0 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1-expected782)
        • PASSED [ 38%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21_[Na]-expected783)
        • PASSED [ 38%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected784)
        • PASSED [ 38%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12-expected785)
        • PASSED [ 38%]
      • 1 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected786)
        • PASSED [ 38%]
      • 1 ms
        failed(CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787])
          array([[7]]) != array([8])
          test_input = 'CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788])
          array([[5]]) != array([6])
          test_input = 'CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNC(C)C1CCC(N)C(OC2C(N)CC(N)C(OC3OCC(C)(O)C(NC)C3O)C2O)O1-expected789)
        • PASSED [ 38%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1-expected790)
        • FAILED [ 38%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1-expected790])
          array([[9]]) != array([12])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CC(C)CC1NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC(=O)C(CC(C)C)NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC1=O-expected791)
        • PASSED [ 38%]
      • 0 ms
        passed(Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1-expected792)
        • PASSED [ 39%]
      • 1 ms
        failed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793])
          array([[4]]) != array([6])
          test_input = 'CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected794)
        • PASSED [ 39%]
      • 0 ms
        passed(CC(Cc1ccccc1)NO-expected795)
        • PASSED [ 39%]
      • 0 ms
        passed(CNC(C)C(O)c1ccc(O)cc1-expected796)
        • PASSED [ 39%]
      • 0 ms
        passed(Cc1cc(=O)oc2cc(O)ccc12-expected797)
        • PASSED [ 39%]
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2[C@@H](O[C@H]2C[C@H](N)[C@H](O)[C@H](C)O2)C1)C(=O)c1ccccc1C3=O-expected798)
        • PASSED [ 39%]
      • 0 ms
        passed(C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12_O-expected799)
        • PASSED [ 39%]
      • 0 ms
        passed(CNC1C(O)C(OC2C(NC(=O)C(O)CN)CC(N)C(OC3OC(CN)C(O)C(O)C3O)C2O)OCC1(C)O-expected800)
        • PASSED [ 39%]
      • 0 ms
        passed(CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected801)
        • PASSED [ 39%]
      • 1 ms
        failed(CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O-expected802)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O-expected802])
          array([[12]]) != array([14])
          test_input = 'CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected803)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected803])
          array([[6]]) != array([7])
          test_input = 'Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1-expected804)
        • PASSED [ 39%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](NC(=O)[C@@H](N)CC(C)C)[C@H](O)[C@H](C)O1-expected805)
        • PASSED [ 39%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)/C(=N\\OC)[C@H](C)[C@@H](O)[C@]1(C)O-expected806)
        • PASSED [ 39%]
      • 0 ms
        passed(CCCC1CC(C(=O)NC(C(C)O)C2OC(SC)C(O)C(O)C2O)N(C)C1-expected807)
        • PASSED [ 39%]
      • 0 ms
        passed(N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1_O-expected808)
        • PASSED [ 39%]
      • 0 ms
        passed(CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1-expected809)
        • PASSED [ 39%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected810)
        • FAILED [ 39%]
        • [14:08:14] WARNING: not removing hydrogen atom without neighbors
          [14:08:14] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]-expected810])
          array([[1]]) != array([2])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O-expected811)
        • PASSED [ 39%]
      • 0 ms
        passed(CC(CN(C)C)OC(C)(c1ccccc1)c1ccc(Cl)cc1-expected812)
        • PASSED [ 39%]
      • 0 ms
        passed(CC1OC(OC2CC(O)(C(=O)CO)Cc3c(O)c4c(c(O)c32)C(=O)c2ccccc2C4=O)CC(N)C1O-expected813)
        • PASSED [ 39%]
      • 0 ms
        passed(C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12_O_O_O-expected814)
        • PASSED [ 39%]
      • 0 ms
        passed(C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1-expected815)
        • PASSED [ 39%]
      • 1 ms
        failed(C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816])
          array([[1]]) != array([2])
          test_input = 'C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNC(C)C(=O)c1ccc(OC)cc1-expected817)
        • PASSED [ 39%]
      • 0 ms
        passed(COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected818)
        • PASSED [ 39%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected819)
        • PASSED [ 39%]
      • 1 ms
        failed(COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820])
          array([[11]]) != array([12])
          test_input = 'COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC-expected821)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC-expected821])
          array([[12]]) != array([14])
          test_input = 'CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CCC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected822)
        • PASSED [ 39%]
      • 0 ms
        passed(CCCCCC1CNC(C(=O)NC(C(C)Cl)C2OC(SC)C(O)C(O)C2O)C1-expected823)
        • PASSED [ 39%]
      • 0 ms
        failed(CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12-expected824)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12-expected824])
          array([[3]]) != array([4])
          test_input = 'CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21-expected825)
        • PASSED [ 39%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O)[C@H](N)C[C@@H]2N)[C@H](N)[C@@H](O)[C@@H]1O-expected826)
        • PASSED [ 39%]
      • 0 ms
        passed(CCN[C@@H]1C[C@H](N)[C@@H](O[C@H]2OC(CN)=CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1OC[C@](C)(O)[C@H](NC)[C@H]1O-expected827)
        • PASSED [ 39%]
      • 1 ms
        failed(COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1-expected828)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1-expected828])
          array([[9]]) != array([10])
          test_input = 'COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]-expected829)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]-expected829])
          array([[4]]) != array([5])
          test_input = 'COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1-expected830)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1-expected830])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12-expected831)
        • PASSED [ 39%]
      • 1 ms
        failed(CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C-expected832)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C-expected832])
          array([[8]]) != array([9])
          test_input = 'CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COC1CC(O[C@H]2[C@H](C)[C@@H](OC3OC(C)CC(N(C)C)C3O)[C@@H](C)C[C@]3(CO3)C(=O)[C@H](C)[C@@H](O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)OC(C)C1O-expected833)
        • PASSED [ 39%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected834)
        • PASSED [ 39%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1-expected835)
        • PASSED [ 39%]
      • 1 ms
        failed(CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O-expected836)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O-expected836])
          array([[10]]) != array([14])
          test_input = 'CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC(C(=O)O)C2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected837)
        • PASSED [ 39%]
      • 1 ms
        failed(CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C-expected838)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C-expected838])
          array([[6]]) != array([8])
          test_input = 'CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O_[Na]-expected839)
        • PASSED [ 39%]
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCNC(C(=O)NC2C(=O)N3C2SC(C)(C)C3C(=O)O)c2ccccc2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected840)
        • PASSED [ 39%]
      • 0 ms
        passed(CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected841)
        • PASSED [ 39%]
      • 0 ms
        passed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected842)
        • PASSED [ 39%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O[C@H]2CCCCO2)[C@H](C)O1-expected843)
        • PASSED [ 39%]
      • 1 ms
        failed(CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844])
          array([[7]]) != array([8])
          test_input = 'CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]-expected845)
        • PASSED [ 39%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected846)
        • PASSED [ 39%]
      • 1 ms
        failed(CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected847)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected847])
          array([[6]]) != array([9])
          test_input = 'CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1-expected848)
        • FAILED [ 39%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1-expected848])
          array([[4]]) != array([6])
          test_input = 'CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cnn(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected849)
        • PASSED [ 40%]
      • 1 ms
        passed(CC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected850)
        • PASSED [ 40%]
      • 0 ms
        passed(CCCNCC(O)COc1ccccc1C(=O)CCc1ccccc1-expected851)
        • PASSED [ 40%]
      • 0 ms
        passed(CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected852)
        • PASSED [ 40%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(NC(CO)CO)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected853)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O-expected854)
        • PASSED [ 40%]
      • 1 ms
        failed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O-expected855)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O-expected855])
          array([[4]]) != array([5])
          test_input = 'CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4-expected856)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4-expected856])
          array([[6]]) != array([8])
          test_input = 'CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4-expected857)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4-expected857])
          array([[5]]) != array([6])
          test_input = 'CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4-expected858)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4-expected858])
          array([[7]]) != array([8])
          test_input = 'CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected859)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected859])
          array([[2]]) != array([3])
          test_input = 'CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected860)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected860])
          array([[5]]) != array([6])
          test_input = 'CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861])
          array([[2]]) != array([3])
          test_input = 'CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12_[Na+]-expected862)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12.[Na+]-expected862])
          array([[4]]) != array([5])
          test_input = 'C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12.[Na+]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](O[C@H]2C[C@H](N(C)C)[C@H](O[C@H]3C[C@@H]4O[C@H]5CC(=O)[C@H](C)O[C@H]5O[C@@H]4[C@H](C)O3)[C@H](C)O2)c2c(O)c3c(c(O)c2[C@H]1O[C@H]1C[C@H](N(C)C)[C@H](O)[C@H](C)O1)C(=O)c1cccc(O)c1C3=O-expected863)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected864)
        • PASSED [ 40%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)/C(=N/OCOCCOC)[C@H](C)[C@@H](O)[C@]1(C)O-expected865)
        • PASSED [ 40%]
      • 0 ms
        failed(COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21-expected866)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21-expected866])
          array([[3]]) != array([2])
          test_input = 'COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C-expected867)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C-expected867])
          array([[5]]) != array([6])
          test_input = 'COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C-expected868)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C-expected868])
          array([[5]]) != array([6])
          test_input = 'COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O-expected869)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O-expected869])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN[C@@H]1[C@@H](O)[C@@H](O[C@@H]2[C@@H](O)[C@H](O[C@H]3OC(CN)=CC[C@H]3N)[C@@H](N)C[C@H]2N)OC[C@]1(C)O-expected870)
        • PASSED [ 40%]
      • 0 ms
        passed(COC1C(O)CC(=O)OC(C)C/C=C/C=C/C(OC2CCC(N(C)C)C(C)O2)C(C)CC(CC=O)C1OC1OC(C)C(OC2CC(C)(O)C(O)C(C)O2)C(N(C)C)C1O-expected871)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O-expected872)
        • PASSED [ 40%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12-expected873)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O_CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected874)
        • PASSED [ 40%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected875)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]-expected875])
          array([[6]]) != array([4])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(C=CC[C@@H]1/C=C(\\C)C[C@H](C)C[C@H](OC)[C@H]2O[C@@](O)(C(=O)C(=O)N3CCCC[C@H]3C(=O)O[C@H](/C(C)=C/[C@@H]3CC[C@@H](O)[C@H](OC)C3)[C@H](C)[C@@H](O)CC1=O)[C@H](C)C[C@@H]2OC-expected876)
        • PASSED [ 40%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21-expected877)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21-expected877])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@]1(Cn2ccnn2)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected878)
        • PASSED [ 40%]
      • 2 ms
        passed(CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(=O)[C@H](NC(=O)[C@@H]4NC(=O)[C@H]4NC(=O)[C@@H](Cc5ccc(c(Cl)c5)O3)NC(=O)[C@H](N)c3ccc(O)c(c3)Oc3cc(O)cc4c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O-expected879)
        • PASSED [ 40%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21-expected880)
        • PASSED [ 40%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O-expected881)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O-expected882)
        • PASSED [ 40%]
      • 0 ms
        passed(CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O-expected883)
        • PASSED [ 40%]
      • 1 ms
        failed(CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1-expected884)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1-expected884])
          array([[8]]) != array([10])
          test_input = 'CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O[C@H]3O[C@H](CO)[C@@H](O)[C@H](N)[C@H]3O)[C@H](N)C[C@@H]2N)[C@H](N)C[C@@H]1O-expected885)
        • PASSED [ 40%]
      • 1 ms
        failed(Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1-expected886)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1-expected886])
          array([[3]]) != array([2])
          test_input = 'Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O-expected887)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O-expected887])
          array([[9]]) != array([12])
          test_input = 'CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCC[C@@H]1CC(=O)[C@]2(O)O[C@@H]3[C@@H](NC)[C@@H](O)[C@@H](NC)[C@H](O)[C@H]3O[C@@H]2O1-expected888)
        • PASSED [ 40%]
      • 0 ms
        passed(Cc1ccc(C(C)C)c(OCC2=NCCN2)c1-expected889)
        • PASSED [ 40%]
      • 1 ms
        failed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected890)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected890])
          array([[6]]) != array([7])
          test_input = 'CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed([C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]-expected891)
        • PASSED [ 40%]
      • 0 ms
        passed(FC(F)(Cl)C(F)(F)Cl-expected892)
        • PASSED [ 40%]
      • 0 ms
        passed(C[C@H]1CCCC[C@@]1(c1cccs1)N1CCCCC1-expected893)
        • PASSED [ 40%]
      • 0 ms
        passed(CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C_[Cl-]_[H+]-expected894)
        • PASSED [ 40%]
        • [14:08:14] WARNING: not removing hydrogen atom without neighbors
          [14:08:14] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CC(=O)NCCCN1CCN(c2cc(Cl)ccc2Cl)CC1-expected895)
        • PASSED [ 40%]
      • 1 ms
        failed(CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12-expected896)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12-expected896])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(Br)(CC)C(=O)NC(=O)NC(C)=O-expected897)
        • PASSED [ 40%]
      • 1 ms
        failed(CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected898)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected898])
          array([[11]]) != array([13])
          test_input = 'CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)NC(CCC(N)=O)C(=O)O-expected899)
        • PASSED [ 40%]
      • 0 ms
        passed(CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected900)
        • PASSED [ 40%]
      • 1 ms
        failed(CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1-expected901)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1-expected901])
          array([[3]]) != array([4])
          test_input = 'CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected902)
        • PASSED [ 40%]
      • 1 ms
        failed(CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected903)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected903])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1-expected904)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1-expected904])
          array([[9]]) != array([11])
          test_input = 'CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5-expected905)
        • FAILED [ 40%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5-expected905])
          array([[5]]) != array([6])
          test_input = 'CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected906)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected906])
          array([[8]]) != array([9])
          test_input = 'CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1-expected907)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1-expected907])
          array([[9]]) != array([13])
          test_input = 'CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1-expected908)
        • PASSED [ 41%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected909)
        • PASSED [ 41%]
      • 1 ms
        failed(O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2-expected910)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2-expected910])
          array([[7]]) != array([8])
          test_input = 'O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(NCCN1CCN(c2ncccn2)CC1)C12CC3CC(CC(C3)C1)C2-expected911)
        • PASSED [ 41%]
      • 0 ms
        failed(CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1-expected912)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1-expected912])
          array([[4]]) != array([5])
          test_input = 'CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl-expected913)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl-expected913])
          array([[6]]) != array([8])
          test_input = 'CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCN(CCC)C1Cc2cccc3cc(O)cc(c23)C1-expected914)
        • PASSED [ 41%]
      • 0 ms
        passed(CC12CC(=O)[C@H]3C(CC[C@H]4C[C@H](O)CCC43C)[C@@H]1CCC2C(=O)CO-expected915)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@H](O)CC[C@]4(C)[C@H]3C(=O)C[C@]12C-expected916)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(=O)C12OC(C)(C)OC1CC1C3CCC4=CC(=O)CCC4(C)C3CCC12C-expected917)
        • PASSED [ 41%]
      • 0 ms
        passed(COC1(F)C(F)(F)C1(F)Cl-expected918)
        • PASSED [ 41%]
      • 0 ms
        passed(C=CCN1CCC23c4c5ccc(O)c4OC2C2(OC)C=CC3(CC2[C@](C)(O)CCC)C1C5-expected919)
        • PASSED [ 41%]
      • 0 ms
        passed(C=CCN1C(=O)OC(C)C1=O-expected920)
        • PASSED [ 41%]
      • 0 ms
        passed(CNC[C@@H]1CN(c2ccc(OCc3cccc(Cl)c3)cc2)C(=O)O1-expected921)
        • PASSED [ 41%]
      • 0 ms
        passed(CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1_[Cl-]_[H+]-expected922)
        • PASSED [ 41%]
        • [14:08:14] WARNING: not removing hydrogen atom without neighbors
          [14:08:14] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C1CCC2(CCC(=O)c3ccccc32)C(=O)N1-expected923)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(=O)NCCn1c(C)cc(C=O)c1C-expected924)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F-expected925)
        • PASSED [ 41%]
      • 1 ms
        failed(CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC-expected926)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC-expected926])
          array([[4]]) != array([5])
          test_input = 'CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC[C@@H](O)C(C[C@@H](C)N(C)C)(c1ccccc1)c1ccccc1-expected927)
        • PASSED [ 41%]
      • 0 ms
        passed(C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC-expected928)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O-expected929)
        • PASSED [ 41%]
      • 0 ms
        passed(CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1-expected930)
        • PASSED [ 41%]
      • 0 ms
        passed(CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO-expected931)
        • PASSED [ 41%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933])
          array([[5]]) != array([6])
          test_input = 'CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)c1ccc(N)cc1-expected934)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2-expected935)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(Cc1ccccc1)NC(C#N)c1ccccc1-expected936)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21_[Cl-]-expected937)
        • PASSED [ 41%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)CC)c(N)cc1OC-expected938)
        • PASSED [ 41%]
      • 0 ms
        passed(C[N+](C)([O-])CCC=C1c2ccccc2CCc2ccccc21-expected939)
        • PASSED [ 41%]
      • 0 ms
        passed(CC(C)CCOC(CN1CCCC1)c1ccccc1-expected940)
        • PASSED [ 41%]
      • 0 ms
        passed(CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected941)
        • PASSED [ 41%]
      • 0 ms
        passed(Nc1cccc(-n2ccccc2=O)c1-expected942)
        • PASSED [ 41%]
      • 0 ms
        passed(CN(C)c1cnccn1-expected943)
        • PASSED [ 41%]
      • 0 ms
        passed(CCC(C)(C)O-expected944)
        • PASSED [ 41%]
      • 1 ms
        failed(CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1-expected945)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1-expected945])
          array([[6]]) != array([7])
          test_input = 'CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(C(=O)N2CCCC2=O)cc1-expected946)
        • PASSED [ 41%]
      • 0 ms
        passed(COc1cc2oc(=O)c(C)c(C)c2cc1OCCCN1CCN(c2ccccc2OC)CC1-expected947)
        • PASSED [ 41%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@H](C)CN1CCCC1)c1ccccc1S2-expected948)
        • PASSED [ 41%]
      • 0 ms
        passed(C=CCC1(C(C)C)C(=O)NC(=O)NC1=O-expected949)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C1CCc2ccc(OCCCCN3CCN(c4cccc(Cl)c4Cl)CC3)cc2N1-expected950)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C1C(O)=C(O)OC1C(O)CO-expected951)
        • PASSED [ 41%]
      • 0 ms
        failed(CC(=O)Oc1ccccc1C(=O)O-expected952)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Oc1ccccc1C(=O)O-expected952])
          array([[2]]) != array([3])
          test_input = 'CC(=O)Oc1ccccc1C(=O)O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCN(CC)c1ccc(NC(=O)c2ccccc2N)c(C)c1-expected953)
        • PASSED [ 41%]
      • 1 ms
        failed(CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2-expected954)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2-expected954])
          array([[4]]) != array([5])
          test_input = 'CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected955)
        • FAILED [ 41%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected955])
          array([[4]]) != array([5])
          test_input = 'C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C(=O)CNC(=O)[C@@H](N)CCCCN)c1ccc(Cl)cc1C(=O)c1ccccc1-expected956)
        • PASSED [ 41%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1-expected957)
        • PASSED [ 41%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1-expected958)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1-expected959)
        • PASSED [ 41%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CCNCC1-expected960)
        • PASSED [ 41%]
      • 0 ms
        passed(O=C1NCCN1C1CCN(CCC2COc3ccccc3O2)CC1-expected961)
        • PASSED [ 41%]
      • 0 ms
        passed(c1ccc2c(c1)CCN1CCNCC21-expected962)
        • PASSED [ 42%]
      • 0 ms
        passed(c1ccc2c(c1)cc1n2CCCNC1-expected963)
        • PASSED [ 42%]
      • 0 ms
        passed(CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1-expected964)
        • PASSED [ 42%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCN1C[C@H]2C[C@H](c3ccc(F)cc3)[C@H]2C1-expected965)
        • PASSED [ 42%]
      • 0 ms
        passed(CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C-expected966)
        • PASSED [ 42%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)NC1=O-expected967)
        • PASSED [ 42%]
      • 1 ms
        failed(Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968])
          array([[0]]) != array([1])
          test_input = 'Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(CCCl)NCc1ccccc1-expected969)
        • PASSED [ 42%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected970)
        • PASSED [ 42%]
      • 0 ms
        passed(COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1-expected971)
        • PASSED [ 42%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC(=O)C1-expected972)
        • PASSED [ 42%]
      • 0 ms
        passed(C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected973)
        • PASSED [ 42%]
      • 1 ms
        failed(CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1-expected974)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1-expected974])
          array([[4]]) != array([6])
          test_input = 'CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1CNC(c2ccccc2)=c2c3c(sc2=N1)CCCC3-expected975)
        • PASSED [ 42%]
      • 1 ms
        failed(C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected976)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected976])
          array([[10]]) != array([11])
          test_input = 'C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[N+](C)([O-])CC/C=C1/c2ccccc2C=Cc2c(Cl)cccc21-expected977)
        • PASSED [ 42%]
      • 0 ms
        passed([Cl]_c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978)
        • PASSED [ 42%]
      • 0 ms
        passed(OCc1ccccc1-expected979)
        • PASSED [ 42%]
      • 0 ms
        passed(CN1CCc2cc(Cl)c(O)cc2[C@@H](c2cc(Br)cc3c2OCC3)C1-expected980)
        • PASSED [ 42%]
      • 1 ms
        failed(CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981])
          array([[8]]) != array([9])
          test_input = 'CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982])
          array([[4]]) != array([5])
          test_input = 'C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983])
          array([[6]]) != array([7])
          test_input = 'CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1CC2(CCCC2)CC(=O)N1CCNCC1COc2ccccc2O1-expected984)
        • PASSED [ 42%]
      • 0 ms
        passed(O=C(O)CCCCC1SCC2NC(=O)NC21-expected985)
        • PASSED [ 42%]
      • 0 ms
        passed(O=C1C[C@H]2SC(C3(O)CN4C(=O)C[C@H]4S3)CN12-expected986)
        • PASSED [ 42%]
      • 0 ms
        passed(O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1-expected987)
        • PASSED [ 42%]
      • 0 ms
        passed(C/C(=C(/CCOC(=O)c1ccccc1)SS/C(CCOC(=O)c1ccccc1)=C(\\C)N(C=O)Cc1cnc(C)nc1N)N(C=O)Cc1cnc(C)nc1N-expected988)
        • PASSED [ 42%]
      • 0 ms
        passed(CC(=O)NCCC[C@H](NC(C)=O)C(=O)O-expected989)
        • PASSED [ 42%]
      • 0 ms
        passed(CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1-expected990)
        • PASSED [ 42%]
      • 0 ms
        passed(CC[C@]12CCN(CC3(O)CC3)[C@H](Cc3ccc(O)cc31)C2(C)C-expected991)
        • PASSED [ 42%]
      • 0 ms
        passed(CC1(C)OC(=O)Nc2ccc(Br)cc21-expected992)
        • PASSED [ 42%]
      • 0 ms
        passed(CC(C)C(Br)C(=O)NC(N)=O-expected993)
        • PASSED [ 42%]
      • 0 ms
        passed(BrC(Br)Br-expected994)
        • PASSED [ 42%]
      • 0 ms
        passed(Cc1cc(Br)cc(C(N)=O)c1O-expected995)
        • PASSED [ 42%]
      • 0 ms
        passed(O=C1CC(c2cccc(Br)c2)C(=O)N1-expected996)
        • PASSED [ 42%]
      • 0 ms
        passed(Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2-expected997)
        • PASSED [ 42%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1-expected998)
        • PASSED [ 42%]
      • 1 ms
        failed(CC(=O)Nc1ccc(OC(C)(C)C)cc1-expected999)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Nc1ccc(OC(C)(C)C)cc1-expected999])
          array([[2]]) != array([3])
          test_input = 'CC(=O)Nc1ccc(OC(C)(C)C)cc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CCCC(=O)c1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected1000)
        • PASSED [ 42%]
      • 0 ms
        passed(CCCCC(CC)CNC(=O)CC(C)O-expected1001)
        • PASSED [ 42%]
      • 0 ms
        passed(Oc1ccc2c(c1)[C@@]13CCCC[C@@]1(O)[C@@H](C2)N(CC1CCC1)CC3-expected1002)
        • PASSED [ 42%]
      • 0 ms
        passed(C=CCN1C[C@H](C(=O)N(CCCN(C)C)C(=O)NCC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected1003)
        • PASSED [ 42%]
      • 0 ms
        passed(CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1-expected1004)
        • PASSED [ 42%]
      • 1 ms
        failed(CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O-expected1005)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O-expected1005])
          array([[2]]) != array([3])
          test_input = 'CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC12CCC(CC1=O)C2(C)C-expected1006)
        • PASSED [ 42%]
      • 0 ms
        passed(CCCCC/C(=N/OCCN)c1ccc(C)c(N)c1-expected1007)
        • PASSED [ 42%]
      • 0 ms
        passed(CCCCSc1ccc(C(SCCN(C)C)c2ccccc2)cc1-expected1008)
        • PASSED [ 42%]
      • 1 ms
        failed(CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O-expected1009)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O-expected1009])
          array([[6]]) != array([7])
          test_input = 'CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1C(=O)CN(C(N)=O)C(c2ccccc2)c2cc(Cl)ccc21-expected1010)
        • PASSED [ 42%]
      • 1 ms
        failed(C#CC(OC(N)=O)c1ccccc1-expected1011)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#CC(OC(N)=O)c1ccccc1-expected1011])
          array([[2]]) != array([3])
          test_input = 'C#CC(OC(N)=O)c1ccccc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2-expected1012)
        • PASSED [ 42%]
      • 0 ms
        passed(NC(=O)CN1Cc2ccccc2OC1=O-expected1013)
        • PASSED [ 42%]
      • 1 ms
        failed(CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014)
        • FAILED [ 42%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014])
          array([[7]]) != array([8])
          test_input = 'CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected1015)
        • PASSED [ 42%]
      • 0 ms
        passed(NS(=O)(=O)c1ccc(C(=O)O)cc1-expected1016)
        • PASSED [ 42%]
      • 0 ms
        passed(C[C@H](N)C(=O)c1ccccc1-expected1017)
        • PASSED [ 42%]
      • 0 ms
        passed(O=C1CN(C(=O)CN2CC(c3ccc(Cl)cc3)CC2=O)CCN1-expected1018)
        • PASSED [ 42%]
      • 0 ms
        passed(OC1OC(COCCOC(O)C(Cl)(Cl)Cl)C(OC2OC(COCCOCCOC(O)C(Cl)(Cl)Cl)CC(OC(O)C(Cl)(Cl)Cl)C2O)C(OCCOCCOC(O)C(Cl)(Cl)Cl)C1O-expected1019)
        • PASSED [ 43%]
      • 0 ms
        passed(COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1-expected1020)
        • PASSED [ 43%]
      • 0 ms
        passed(Cc1cc(C)c(=O)[nH]n1-expected1021)
        • PASSED [ 43%]
      • 0 ms
        passed(CC(=O)c1ccc(C(O)C(CO)NC(=O)C(Cl)Cl)cc1-expected1022)
        • PASSED [ 43%]
      • 1 ms
        failed(CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N-expected1023)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N-expected1023])
          array([[10]]) != array([13])
          test_input = 'CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OC[C@@H](O)[C@H]1OC2O[C@H](C(Cl)(Cl)Cl)O[C@@H]2[C@H]1O-expected1024)
        • PASSED [ 43%]
      • 0 ms
        passed(CC(CC(C)(C)O)OC(O)C(Cl)(Cl)Cl-expected1025)
        • PASSED [ 43%]
      • 0 ms
        passed(CN1C(=O)CCS(=O)(=O)C1c1ccc(Cl)cc1-expected1026)
        • PASSED [ 43%]
      • 0 ms
        passed(ClC(Cl)Cl-expected1027)
        • PASSED [ 43%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2o1-expected1028)
        • PASSED [ 43%]
      • 1 ms
        failed(CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C-expected1029)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C-expected1029])
          array([[5]]) != array([6])
          test_input = 'CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21-expected1030)
        • PASSED [ 43%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(C)N[C@H]1C2CCC(CC2)[C@]1(O)c1ccc(Cl)c(Cl)c1-expected1032)
        • PASSED [ 43%]
      • 0 ms
        passed(NNCC1CCCCC1-expected1033)
        • PASSED [ 43%]
      • 0 ms
        passed(CC(C)C(O)C1CCCCC1-expected1034)
        • PASSED [ 43%]
      • 0 ms
        passed(COCC1CN(c2ccc(OCc3cccc(C#N)c3)cc2)C(=O)O1-expected1035)
        • PASSED [ 43%]
      • 0 ms
        passed(COc1cc(/C=C/C(=O)N2CCCCCCC2)cc(OC)c1OC-expected1036)
        • PASSED [ 43%]
      • 0 ms
        passed(N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1037)
        • PASSED [ 43%]
      • 0 ms
        passed(CN(C(=O)CNC1CC1)c1ccc(Cl)cc1C(=O)c1ccccc1Cl-expected1038)
        • PASSED [ 43%]
      • 1 ms
        failed(CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039])
          array([[4]]) != array([5])
          test_input = 'CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CCC2=C(CC1)c1cc(C#N)ccc1Sc1ccccc12-expected1040)
        • PASSED [ 43%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(Cc2ccccc2)CC1-expected1041)
        • PASSED [ 43%]
      • 0 ms
        failed(Clc1cccc(Cl)c1NC1=NCCO1-expected1042)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Clc1cccc(Cl)c1NC1=NCCO1-expected1042])
          array([[1]]) != array([2])
          test_input = 'Clc1cccc(Cl)c1NC1=NCCO1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1043)
        • PASSED [ 43%]
      • 1 ms
        failed(CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044])
          array([[5]]) != array([6])
          test_input = 'CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCN2c3ccccc3CCc3ccc(Cl)cc32)CC1-expected1045)
        • PASSED [ 43%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO-expected1046)
        • PASSED [ 43%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048])
          array([[3]]) != array([5])
          test_input = 'C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21-expected1049)
        • PASSED [ 43%]
      • 0 ms
        passed(CCN(CC)CCOC1(c2ccc(Cl)cc2)CCCCC1-expected1050)
        • PASSED [ 43%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected1051)
        • PASSED [ 43%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1052)
        • PASSED [ 43%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1-expected1053)
        • PASSED [ 43%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1C(Cl)=C[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected1054)
        • PASSED [ 43%]
      • 0 ms
        failed(O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl-expected1055)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl-expected1055])
          array([[2]]) != array([4])
          test_input = 'O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C#CCN(C)CCCOc1ccc(Cl)cc1Cl-expected1056)
        • PASSED [ 43%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected1057)
        • PASSED [ 43%]
      • 0 ms
        passed(CN1CCN(C2Cc3ccccc3Sc3ccc(Cl)cc32)CC1-expected1058)
        • PASSED [ 43%]
      • 0 ms
        passed(CCc1cc2c(s1)N(C)C(=O)CN=C2c1ccccc1Cl-expected1059)
        • PASSED [ 43%]
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060])
          array([[4]]) != array([6])
          test_input = 'CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNC(=O)CCN1CCN(CCC=C2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1061)
        • PASSED [ 43%]
      • 0 ms
        passed(CCC12CCN(CC3CCC3)C(Cc3ccc(O)cc31)C2(C)C-expected1062)
        • PASSED [ 43%]
      • 0 ms
        passed(CC[C@H]1CC(=O)[C@@H]2Oc3c(OC)ccc4c3[C@@]23CCN(CC2CC2)C(C4)[C@H]13-expected1063)
        • PASSED [ 43%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(O)C(=O)CO-expected1064)
        • PASSED [ 43%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C-expected1065)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C-expected1065])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12-expected1066)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12-expected1066])
          array([[6]]) != array([7])
          test_input = 'CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067])
          array([[4]]) != array([5])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1C(=O)CCC1c1cccnc1-expected1068)
        • PASSED [ 43%]
      • 0 ms
        passed(CN(C)CC(=O)C=C1c2ccccc2CCc2ccccc21-expected1069)
        • PASSED [ 43%]
      • 1 ms
        failed(CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1-expected1070)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1-expected1070])
          array([[2]]) != array([3])
          test_input = 'CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C/C=C/C(=O)N(CC)C(CC)C(=O)N(C)C-expected1071)
        • PASSED [ 43%]
      • 1 ms
        failed(O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1-expected1072)
        • FAILED [ 43%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1-expected1072])
          array([[6]]) != array([8])
          test_input = 'O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)C1CCc2[nH]c3ccccc3c2C1-expected1073)
        • PASSED [ 43%]
      • 0 ms
        passed(CCC1(C2=CCCCC2)C(=O)NC(=O)NC1=O-expected1074)
        • PASSED [ 43%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C=Cc2ccccc21-expected1075)
        • PASSED [ 43%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@@H](O)C45CC4CC[C@]5(C)[C@H]3CC[C@]12C-expected1076)
        • PASSED [ 44%]
      • 0 ms
        failed(C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N-expected1077)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N-expected1077])
          array([[4]]) != array([3])
          test_input = 'C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(=O)C1c2ccccc2CCc2ccccc21-expected1078)
        • PASSED [ 44%]
      • 0 ms
        passed(COC12C=CC3(CC1C(C)(C)O)[C@@H]1Cc4ccc(O)c5c4[C@]3(CCN1CC1CC1)[C@@H]2O5-expected1079)
        • PASSED [ 44%]
      • 0 ms
        failed(CN(C)CCOC(=O)CCC1CCCCC1-expected1080)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN(C)CCOC(=O)CCC1CCCCC1-expected1080])
          array([[6]]) != array([7])
          test_input = 'CN(C)CCOC(=O)CCC1CCCCC1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CC1c1ccncc1-expected1081)
        • PASSED [ 44%]
      • 0 ms
        passed(O=C1NC(=O)C2(c3ccc(Cl)cc3)CC12-expected1082)
        • PASSED [ 44%]
      • 0 ms
        passed(CN(C)CC(=O)N1c2ccccc2Sc2ccccc21-expected1083)
        • PASSED [ 44%]
      • 0 ms
        passed(OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1-expected1084)
        • PASSED [ 44%]
      • 0 ms
        passed(CCCCCCCCCCOc1c(OC)cc(C(N)=O)cc1OC-expected1085)
        • PASSED [ 44%]
      • 0 ms
        passed(Cc1ccc(Cc2ccccc2)c(N2CCNCC2)c1-expected1086)
        • PASSED [ 44%]
      • 0 ms
        passed(O=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected1087)
        • PASSED [ 44%]
      • 0 ms
        passed(CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O-expected1088)
        • PASSED [ 44%]
      • 0 ms
        passed(CC(=O)C1(O)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1089)
        • PASSED [ 44%]
      • 0 ms
        passed(Nc1ncc2ncn(COCCO)c2n1-expected1090)
        • PASSED [ 44%]
      • 0 ms
        passed(CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1091)
        • PASSED [ 44%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@H]4C(O)CC3(C)[C@]2(C(=O)CO)O1-expected1092)
        • PASSED [ 44%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO-expected1093)
        • PASSED [ 44%]
      • 0 ms
        passed(Cc1cccc(Cc2cnc[nH]2)c1C-expected1094)
        • PASSED [ 44%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095])
          array([[5]]) != array([7])
          test_input = 'CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(c1ccc([C@@H]2CN3CCSC3=N2)cc1-expected1096)
        • PASSED [ 44%]
      • 0 ms
        passed(c1ccc(C2CN=C3NCCN32)cc1-expected1097)
        • PASSED [ 44%]
      • 0 ms
        passed(c1ccc(C2(c3ccccc3)OC[C@H]([C@@H]3CCCCN3)O2)cc1-expected1098)
        • PASSED [ 44%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CC[C@](O)(C(=O)CO)C3(C)CC(Cl)[C@@]12Cl-expected1099)
        • PASSED [ 44%]
      • 0 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C-expected1100)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C-expected1100])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCN(CC)CCNC(=O)c1cc(Cl)cc(Cl)c1OC-expected1101)
        • PASSED [ 44%]
      • 0 ms
        failed(CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2-expected1102)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2-expected1102])
          array([[8]]) != array([11])
          test_input = 'CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1103)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1103])
          array([[18]]) != array([20])
          test_input = 'CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O'
          expected = array([20.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[18]]) == array([20])
          E Full diff:
          E - array([20])
          E ? ^^
          E + array([[18]])
          E ? ^^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1-expected1104)
        • PASSED [ 44%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO-expected1105)
        • PASSED [ 44%]
      • 1 ms
        failed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106])
          array([[3]]) != array([5])
          test_input = 'C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CCC(C)(CN2c3ccccc3Sc3ccccc32)C1-expected1107)
        • PASSED [ 44%]
      • 0 ms
        passed(CC1(C)OC(=O)NC1=O-expected1108)
        • PASSED [ 44%]
      • 0 ms
        passed(CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1109)
        • PASSED [ 44%]
      • 0 ms
        passed(CC(Cc1ccccc1)N(C)C-expected1110)
        • PASSED [ 44%]
      • 0 ms
        passed(O=C1CN2C(=O)CCC2N1-expected1111)
        • PASSED [ 44%]
      • 0 ms
        failed(CCCCCCCCCC1(C)OCC(COC(N)=O)O1-expected1112)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCCCCC1(C)OCC(COC(N)=O)O1-expected1112])
          array([[10]]) != array([11])
          test_input = 'CCCCCCCCCC1(C)OCC(COC(N)=O)O1', expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC(=O)NNC(=O)CC(O)(c1ccccc1)c1ccccc1-expected1113)
        • PASSED [ 44%]
      • 1 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1C(C)(C)O)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected1114)
        • PASSED [ 44%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C-expected1115)
        • PASSED [ 44%]
      • 0 ms
        passed(CC12NC(Cc3ccccc31)c1ccccc12-expected1116)
        • PASSED [ 44%]
      • 1 ms
        failed(CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1117)
        • FAILED [ 44%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1117])
          array([[4]]) != array([5])
          test_input = 'CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2_[Cl-]_[H+]-expected1118)
        • PASSED [ 44%]
        • [14:08:15] WARNING: not removing hydrogen atom without neighbors
          [14:08:15] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(O=C(NCCc1ccc(O)c(O)c1)C12CC3CC(CC(C3)C1)C2-expected1119)
        • PASSED [ 44%]
      • 0 ms
        passed(CCN1CC(CCN2CCOCC2)C(c2ccccc2)(c2ccccc2)C1=O-expected1120)
        • PASSED [ 44%]
      • 0 ms
        passed(COc1ccc2c(c1OC)[C@]13CCN(C)[C@H](C2)[C@]1(O)CC[C@@H](O)C3-expected1121)
        • PASSED [ 44%]
      • 0 ms
        passed(CNCCC(Oc1cccc2ccccc12)c1cccs1-expected1122)
        • PASSED [ 44%]
      • 0 ms
        passed(O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1123)
        • PASSED [ 44%]
      • 0 ms
        passed(O=C(CN1CCCC1=O)NNC(=O)CN1CCCC1=O-expected1124)
        • PASSED [ 44%]
      • 0 ms
        passed(CCC(=O)N(c1ccc(Cl)c(Cl)c1)[C@@H]1CCC[C@H]1N(C)C-expected1125)
        • PASSED [ 44%]
      • 0 ms
        passed(CC1=NN(c2ccccc2)C(=O)C1-expected1126)
        • PASSED [ 44%]
      • 0 ms
        passed(Cc1nccn1C(C)c1ccccc1-expected1127)
        • PASSED [ 44%]
      • 0 ms
        passed(CCN(CC)C/C=C1/c2ccccc2Nc2cc(Cl)ccc21-expected1128)
        • PASSED [ 44%]
      • 0 ms
        passed(CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected1129)
        • PASSED [ 44%]
      • 0 ms
        passed(Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1-expected1130)
        • PASSED [ 44%]
      • 0 ms
        passed(c1cc2c(c(N3CCNCC3)c1)OCCO2-expected1131)
        • PASSED [ 44%]
      • 0 ms
        passed(CCC(CC)(CNC(=O)CCCO)c1cccc(OC)c1-expected1132)
        • PASSED [ 45%]
      • 0 ms
        passed(COc1ccccc1N1CCN(CC(O)COc2cc(OC)c(OC)c(OC)c2)CC1-expected1133)
        • PASSED [ 45%]
      • 0 ms
        failed(CCOC(=O)N(Cc1ccccc1)C1CC1-expected1134)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)N(Cc1ccccc1)C1CC1-expected1134])
          array([[4]]) != array([5])
          test_input = 'CCOC(=O)N(Cc1ccccc1)C1CC1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OC1CCN(c2ccc(-c3ccc(Cl)cc3Cl)nn2)CC1-expected1135)
        • PASSED [ 45%]
      • 0 ms
        passed(CCN(CC)C(=O)[C@H]1[C@H](C(=O)N(CC)CC)[C@H]2C=C[C@@H]1C2-expected1136)
        • PASSED [ 45%]
      • 0 ms
        passed(CC(=O)C1CCC2C3CC(C)C4=CC(=O)C=CC4(C)C3C(O)CC12C-expected1137)
        • PASSED [ 45%]
      • 0 ms
        passed(CC1OC2(CCCCC2Oc2cccc(Cl)c2)NC1=O-expected1138)
        • PASSED [ 45%]
      • 0 ms
        failed(CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected1139)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected1139])
          array([[7]]) != array([8])
          test_input = 'CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CCC2=C(CC1)c1ccccc1N(C)c1ccccc12-expected1140)
        • PASSED [ 45%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(C(C)=O)ccc1OC-expected1141)
        • PASSED [ 45%]
      • 0 ms
        passed(CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1142)
        • PASSED [ 45%]
      • 0 ms
        passed(CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1-expected1143)
        • PASSED [ 45%]
      • 0 ms
        passed(CCOC1c2ccccc2C(=O)N(C)c2ccccc21-expected1144)
        • PASSED [ 45%]
      • 0 ms
        passed(CCCl-expected1145)
        • PASSED [ 45%]
      • 0 ms
        passed(C=C-expected1146)
        • PASSED [ 45%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC=C(C)C1=O-expected1147)
        • PASSED [ 45%]
      • 0 ms
        passed(CCNC1(c2ccccc2)CCCCC1-expected1148)
        • PASSED [ 45%]
      • 0 ms
        passed(CCC(C(N)=O)N1CCCC1=O-expected1149)
        • PASSED [ 45%]
      • 0 ms
        passed(CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1150)
        • PASSED [ 45%]
      • 0 ms
        passed(O=C(O)/C=C/C(=O)O_OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected1151)
        • PASSED [ 45%]
      • 0 ms
        passed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC-expected1152)
        • PASSED [ 45%]
      • 0 ms
        passed(CCCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(O)ccc5c4C12CCN(C)C3C5-expected1153)
        • PASSED [ 45%]
      • 0 ms
        passed(CCC1(c2ccccc2)OCC(C2CCCCN2)O1-expected1154)
        • PASSED [ 45%]
      • 0 ms
        failed(CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155])
          array([[7]]) != array([9])
          test_input = 'CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O', expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN(C)CCCn1c(=O)c2ccccc2c2ccccc21-expected1156)
        • PASSED [ 45%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C-expected1157)
        • PASSED [ 45%]
      • 0 ms
        passed(O=C1CC[C@H](C(=O)N2CCCCC2)N1-expected1158)
        • PASSED [ 45%]
      • 0 ms
        failed(CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1159)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1159])
          array([[10]]) != array([11])
          test_input = 'CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(NC(=O)OCC(COC(N)=O)c1ccccc1-expected1160)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[NC(=O)OCC(COC(N)=O)c1ccccc1-expected1160])
          array([[5]]) != array([7])
          test_input = 'NC(=O)OCC(COC(N)=O)c1ccccc1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(OCC2CN(C)CCC2c2ccccc2)cc1-expected1161)
        • PASSED [ 45%]
      • 1 ms
        failed(O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162])
          array([[6]]) != array([7])
          test_input = 'O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1-expected1163)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1-expected1163])
          array([[7]]) != array([8])
          test_input = 'CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCNC1C2CCC(C2)C1c1ccccc1-expected1164)
        • PASSED [ 45%]
      • 0 ms
        passed(CCCCN/C(=C1/C=C(Cl)C=CC1=O)c1ccccc1Cl-expected1165)
        • PASSED [ 45%]
      • 0 ms
        passed(c1ccc(CC2NCCc3c2[nH]c2ccccc32)cc1-expected1166)
        • PASSED [ 45%]
      • 0 ms
        passed(CCC1C(=O)NC(=O)C1(C)c1ccccc1-expected1167)
        • PASSED [ 45%]
      • 0 ms
        passed(Clc1ccc(OCC2=NCCN2)cc1Cl-expected1168)
        • PASSED [ 45%]
      • 0 ms
        passed(CC1NC(=O)COC1c1ccccc1-expected1169)
        • PASSED [ 45%]
      • 0 ms
        passed(CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1-expected1170)
        • PASSED [ 45%]
      • 0 ms
        passed(CCNC1=NC(=O)C(c2ccccc2)O1-expected1171)
        • PASSED [ 45%]
      • 0 ms
        passed(CC(C)(O)CC(C)(O)c1ccc(Cl)cc1-expected1172)
        • PASSED [ 45%]
      • 0 ms
        passed(Cn1nc(-c2cccnc2)nc1-c1ccccc1CO-expected1173)
        • PASSED [ 45%]
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)N1CCN(Cc2ccc3c(c2)OCO3)CC1-expected1174)
        • PASSED [ 45%]
      • 0 ms
        failed(CC(C)(C)NCC(O)c1ccccc1F-expected1175)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(C)(C)NCC(O)c1ccccc1F-expected1175])
          array([[3]]) != array([4])
          test_input = 'CC(C)(C)NCC(O)c1ccccc1F', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1-expected1176)
        • PASSED [ 45%]
      • 0 ms
        passed(CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1177)
        • PASSED [ 45%]
      • 1 ms
        failed(CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1-expected1180)
        • PASSED [ 45%]
      • 1 ms
        passed(CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1-expected1181)
        • PASSED [ 45%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected1182)
        • PASSED [ 45%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(Cc1cc2c(s1)=Nc1ccc(F)cc1NC=2N1CCN(C)CC1-expected1184)
        • PASSED [ 45%]
      • 0 ms
        passed(COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1185)
        • PASSED [ 45%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187])
          array([[5]]) != array([6])
          test_input = 'CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188)
        • FAILED [ 45%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188])
          array([[7]]) != array([8])
          test_input = 'CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCS(=O)(=O)c1ccc(F)cc1-expected1189)
        • PASSED [ 46%]
      • 1 ms
        failed(CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190])
          array([[2]]) != array([3])
          test_input = 'CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21-expected1191)
        • PASSED [ 46%]
      • 0 ms
        passed(CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1-expected1192)
        • PASSED [ 46%]
      • 1 ms
        failed(CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193])
          array([[12]]) != array([13])
          test_input = 'CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1194)
        • PASSED [ 46%]
      • 0 ms
        passed(NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1-expected1195)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2-expected1196)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO-expected1197)
        • PASSED [ 46%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1198)
        • PASSED [ 46%]
      • 1 ms
        failed(CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199])
          array([[2]]) != array([3])
          test_input = 'CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200])
          array([[4]]) != array([6])
          test_input = 'CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1-expected1201)
        • PASSED [ 46%]
      • 0 ms
        failed(CCOC(=O)c1cncn1C(C)c1ccc(F)cc1-expected1202)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)c1cncn1C(C)c1ccc(F)cc1-expected1202])
          array([[4]]) != array([5])
          test_input = 'CCOC(=O)c1cncn1C(C)c1ccc(F)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1-expected1203)
        • PASSED [ 46%]
      • 0 ms
        passed(CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21-expected1204)
        • PASSED [ 46%]
      • 0 ms
        passed(COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1_O=C(O)/C=C\\C(=O)O-expected1205)
        • PASSED [ 46%]
      • 0 ms
        passed(CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1-expected1206)
        • PASSED [ 46%]
      • 0 ms
        passed(Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1-expected1207)
        • PASSED [ 46%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208])
          array([[7]]) != array([8])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CP(C)(=O)CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected1209)
        • PASSED [ 46%]
      • 0 ms
        passed(NNC(=O)CP(=O)(c1ccccc1)c1ccccc1-expected1210)
        • PASSED [ 46%]
      • 0 ms
        passed(C[C@@H]1O[C@@H]1P(=O)(O)O-expected1211)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O-expected1212)
        • PASSED [ 46%]
      • 0 ms
        passed(CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1213)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1214)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1OCCC1C1(O)CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1215)
        • PASSED [ 46%]
      • 1 ms
        failed(C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N-expected1216)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N-expected1216])
          array([[10]]) != array([9])
          test_input = 'C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=c1[nH]oc2c1CCNC2-expected1217)
        • PASSED [ 46%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@](C)(O)CC[C@]4(C)[C@H]3CC[C@]12C-expected1218)
        • PASSED [ 46%]
      • 1 ms
        failed(COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12-expected1219)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12-expected1219])
          array([[6]]) != array([7])
          test_input = 'COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCC12CCN(CC3CC3)C(Cc3ccc(O)cc31)C2(C)C-expected1220)
        • PASSED [ 46%]
      • 0 ms
        passed(CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1_[Cl-]_[H+]-expected1221)
        • PASSED [ 46%]
        • [14:08:16] WARNING: not removing hydrogen atom without neighbors
          [14:08:16] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3-expected1222)
        • PASSED [ 46%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C(c1cccc(Cl)c1)=NN=C(C)C2-expected1223)
        • PASSED [ 46%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1-expected1224)
        • PASSED [ 46%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO-expected1225)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C(NCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1)c1ccc(F)cc1-expected1226)
        • PASSED [ 46%]
      • 1 ms
        failed(CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227])
          array([[15]]) != array([16])
          test_input = 'CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1'
          expected = array([16.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[15]]) == array([16])
          E Full diff:
          E - array([16])
          E ? ^
          E + array([[15]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F-expected1228)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1-expected1229)
        • PASSED [ 46%]
      • 0 ms
        passed(CCCCCC(N)C(O)(c1ccccc1)c1ccccc1-expected1230)
        • PASSED [ 46%]
      • 0 ms
        passed(OCCN1C=CN(CCCN2c3ccccc3C=Cc3ccccc32)C=CC1-expected1231)
        • PASSED [ 46%]
      • 0 ms
        passed(CCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(OC)ccc5c4C12CCN(CC1CC1)C3C5-expected1232)
        • PASSED [ 46%]
      • 0 ms
        passed(CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O-expected1233)
        • PASSED [ 46%]
      • 1 ms
        failed(CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1234)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1234])
          array([[7]]) != array([8])
          test_input = 'CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1235)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1235])
          array([[5]]) != array([7])
          test_input = 'CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O_O-expected1236)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O-expected1236])
          array([[6]]) != array([7])
          test_input = 'C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C-expected1237)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C-expected1237])
          array([[6]]) != array([7])
          test_input = 'CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1-expected1238)
        • FAILED [ 46%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1-expected1238])
          array([[6]]) != array([7])
          test_input = 'CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)CC[C@@]3(O)[C@H]1C5-expected1239)
        • PASSED [ 46%]
      • 0 ms
        passed(COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1-expected1240)
        • PASSED [ 46%]
      • 0 ms
        passed(CCC(Br)(C(N)=O)C(C)C-expected1241)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CCOCC1CC1-expected1242)
        • PASSED [ 46%]
      • 0 ms
        passed(Cc1cccc(O[C@H]2CCNC[C@H]2O)c1C-expected1243)
        • PASSED [ 46%]
      • 0 ms
        passed(O=C(/C=C/c1ccc2c(c1)OCO2)N1CCCCC1-expected1244)
        • PASSED [ 46%]
      • 0 ms
        passed(COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1-expected1245)
        • PASSED [ 46%]
      • 0 ms
        passed(CN1CCN(CCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)C1=O-expected1246)
        • PASSED [ 47%]
      • 0 ms
        passed(CN(C)CCN1CCN(c2cccc(Cl)c2)C1=O-expected1247)
        • PASSED [ 47%]
      • 0 ms
        passed(C[N+](C)([O-])CCCN1c2ccccc2CCc2ccccc21-expected1248)
        • PASSED [ 47%]
      • 0 ms
        passed(C1=Cc2cccc(OCC3CNCCO3)c2C1-expected1249)
        • PASSED [ 47%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected1250)
        • PASSED [ 47%]
      • 0 ms
        passed(CN(C)CCC1(c2ccccc2)C=Cc2ccccc21-expected1251)
        • PASSED [ 47%]
      • 0 ms
        passed(CC(C)NNC(=O)COc1ccc(Cl)cc1-expected1252)
        • PASSED [ 47%]
      • 0 ms
        passed(CSc1c(Cl)nc(NC(C)C)nc1N1CCN(C)CC1-expected1253)
        • PASSED [ 47%]
      • 0 ms
        passed(Cc1cc(C(=O)NNCc2ccccc2)no1-expected1254)
        • PASSED [ 47%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F-expected1255)
        • PASSED [ 47%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257])
          array([[6]]) != array([9])
          test_input = 'CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C=C[C@@H]1CNCC[C@H]1CCCc1ccnc2ccc(OC)cc12-expected1258)
        • PASSED [ 47%]
      • 0 ms
        passed(CC1[C@H]2C(=O)c3ccc(O)cc3[C@]1(C)CCN2CC1CC1-expected1259)
        • PASSED [ 47%]
      • 0 ms
        passed(CC1=CC(=O)N2CC(=O)N(C)c3ccc(Cl)cc3C2(c2ccccc2)O1-expected1260)
        • PASSED [ 47%]
      • 0 ms
        passed(CCC(=O)C1(c2cccc(O)c2)CCN(C)CC1-expected1261)
        • PASSED [ 47%]
      • 0 ms
        passed(Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1-expected1262)
        • PASSED [ 47%]
      • 0 ms
        passed(O=C(CN1CCC23CCCCC2C1Cc1ccc(O)cc13)c1ccccc1-expected1263)
        • PASSED [ 47%]
      • 0 ms
        passed(O=C1N(c2ccccc2)c2ccccc2C1(Cc1ccncc1)Cc1ccncc1-expected1264)
        • PASSED [ 47%]
      • 0 ms
        passed(CCN(CC)C(=O)N[C@H]1C=C2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1265)
        • PASSED [ 47%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1266)
        • PASSED [ 47%]
      • 0 ms
        passed(O=C1CCNc2ccc(Cl)cc2N1c1ccccc1-expected1267)
        • PASSED [ 47%]
      • 1 ms
        failed(CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C-expected1268)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C-expected1268])
          array([[7]]) != array([8])
          test_input = 'CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        passed(CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1_[Cl-]_[H+]-expected1269)
        • PASSED [ 47%]
        • [14:08:16] WARNING: not removing hydrogen atom without neighbors
          [14:08:16] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(COc1ccc(Cl)c2c1CCCC2N(C)C-expected1270)
        • PASSED [ 47%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)nc2C(c2ccccc2Cl)=NC1O-expected1271)
        • PASSED [ 47%]
      • 1 ms
        failed(CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1-expected1272)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1-expected1272])
          array([[3]]) != array([2])
          test_input = 'CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2Cl)c2cc(Cl)ccc21-expected1273)
        • PASSED [ 47%]
      • 0 ms
        passed(FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1-expected1274)
        • PASSED [ 47%]
      • 0 ms
        passed(CN1CC[C@]23NC(=O)CC(c4cc(Cl)ccc4O2)C3C1-expected1275)
        • PASSED [ 47%]
      • 0 ms
        passed(CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl_O-expected1276)
        • PASSED [ 47%]
      • 0 ms
        passed(COC1=CC(=O)OC1C(O)c1ccccc1Cl-expected1277)
        • PASSED [ 47%]
      • 1 ms
        failed(CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1278)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1278])
          array([[4]]) != array([7])
          test_input = 'CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279])
          array([[0]]) != array([1])
          test_input = 'CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1-expected1280)
        • PASSED [ 47%]
      • 0 ms
        passed(OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21-expected1281)
        • PASSED [ 47%]
      • 0 ms
        passed(CN1CCN(CC(=O)[C@@]2(O)CC[C@H]3[C@@H]4CCC5=CC(=O)C=C[C@]5(C)[C@H]4[C@@H](O)C[C@@]32C)CC1-expected1282)
        • PASSED [ 47%]
      • 0 ms
        passed(CC(NN)c1ccccc1-expected1283)
        • PASSED [ 47%]
      • 1 ms
        failed(CCC(C)C(C)(COC(N)=O)COC(N)=O-expected1284)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(C)C(C)(COC(N)=O)COC(N)=O-expected1284])
          array([[6]]) != array([8])
          test_input = 'CCC(C)C(C)(COC(N)=O)COC(N)=O', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O-expected1285)
        • FAILED [ 47%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O-expected1285])
          array([[2]]) != array([1])
          test_input = 'C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNC(=O)NC(O)C(Cl)(Cl)Cl-expected1286)
        • PASSED [ 47%]
      • 0 ms
        passed(C[C@@H]1CC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC2(C)[C@@]1(O)C(=O)CO-expected1287)
        • PASSED [ 47%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@]12C-expected1288)
        • PASSED [ 47%]
      • 0 ms
        passed(CCN(CC)CCNC(=O)COc1ccc(OC)cc1_[Cl-]_[H+]-expected1289)
        • PASSED [ 47%]
        • [14:08:16] WARNING: not removing hydrogen atom without neighbors
          [14:08:16] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1290)
        • PASSED [ 47%]
      • 0 ms
        passed(CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1291)
        • PASSED [ 47%]
      • 0 ms
        passed(CC12CC3CC(C)(C1)CC(N)(C3)C2-expected1292)
        • PASSED [ 47%]
      • 0 ms
        passed(COc1ccccc1OCC1CNC(=O)O1-expected1293)
        • PASSED [ 47%]
      • 0 ms
        passed(COc1ccc2c(c1)C(O)(CCCN(C)C)c1ccccc1S2-expected1294)
        • PASSED [ 47%]
      • 0 ms
        passed(CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21-expected1295)
        • PASSED [ 47%]
      • 0 ms
        passed(CC(=O)Nc1cccc(O)c1-expected1296)
        • PASSED [ 47%]
      • 0 ms
        passed(CC(C)(O)C(C)(O)c1cccc(Cl)c1-expected1297)
        • PASSED [ 47%]
      • 0 ms
        passed(CN(C)CCN(Cc1cccs1)c1ccccn1-expected1298)
        • PASSED [ 47%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(C)C1=O-expected1299)
        • PASSED [ 47%]
      • 0 ms
        passed(CCCC(C)C1(CCSC)C(=O)NC(=S)NC1=O-expected1300)
        • PASSED [ 47%]
      • 0 ms
        passed(CC1=CCC2C3Cc4ccc(O)c5c4C2(CCN3C)C1O5-expected1301)
        • PASSED [ 47%]
      • 0 ms
        passed(CO[C@H]1CC[C@H]2[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1302)
        • PASSED [ 48%]
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1303)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1303])
          array([[5]]) != array([7])
          test_input = 'CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304])
          array([[0]]) != array([1])
          test_input = 'Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC-expected1305)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC-expected1305])
          array([[11]]) != array([12])
          test_input = 'COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CS(=O)(=O)c1ccc2c(c1)N(CCCN1CCC(C(N)=O)CC1)c1ccccc1S2-expected1306)
        • PASSED [ 48%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@@]2(C)C(=O)CC[C@H]3[C@H]1C5-expected1307)
        • PASSED [ 48%]
      • 1 ms
        failed(COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC-expected1308)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC-expected1308])
          array([[4]]) != array([5])
          test_input = 'COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(COc1ccc2c(c1)C(N1CCN(C)CC1)=Cc1ccccc1O2-expected1309)
        • PASSED [ 48%]
      • 0 ms
        passed(COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1-expected1310)
        • PASSED [ 48%]
      • 0 ms
        failed(CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21-expected1311)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21-expected1311])
          array([[6]]) != array([7])
          test_input = 'CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CC1COC2(c3ccccc3Cl)c3cc(Cl)ccc3NC(=O)CN12-expected1312)
        • PASSED [ 48%]
      • 0 ms
        passed(CNc1nc(Cl)c(SC)c(N2CCN(C)CC2)n1-expected1313)
        • PASSED [ 48%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected1314)
        • PASSED [ 48%]
      • 0 ms
        passed(NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F-expected1315)
        • PASSED [ 48%]
      • 0 ms
        passed(CCCCCNCC(N)=O-expected1316)
        • PASSED [ 48%]
      • 0 ms
        passed(CO/N=C/C1=CCCN(C)C1-expected1317)
        • PASSED [ 48%]
      • 0 ms
        passed(Cc1cc(-c2ccccc2)nnc1NCCN1CCOCC1-expected1318)
        • PASSED [ 48%]
      • 0 ms
        passed(CCO[C@H]1C[C@@]2(C)[C@@H](CC[C@@H]3[C@@H]2[C@H](N(C)C)C[C@]2(C)[C@@H](C(C)=O)CC[C@@H]32)C[C@@H]1O-expected1319)
        • PASSED [ 48%]
      • 0 ms
        passed(CN1[C@@H]2CC[C@H]1CC(NC(=O)c1cn(C3CCCCC3)c3ccccc3c1=O)C2-expected1320)
        • PASSED [ 48%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected1321)
        • PASSED [ 48%]
      • 0 ms
        passed(NC(=O)CS(=O)C(c1ccccc1)c1ccccc1-expected1322)
        • PASSED [ 48%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1323)
        • PASSED [ 48%]
      • 0 ms
        passed(CNCCCN1c2ccccc2C(C)(C)c2ccccc21-expected1324)
        • PASSED [ 48%]
      • 0 ms
        passed(CC1(c2ccccc2)CC(=O)N(CN2CCOCC2)C1=O-expected1325)
        • PASSED [ 48%]
      • 0 ms
        passed(O=C1NC2CCCCN2C12CCN(CCCN1c3ccccc3CCc3ccc(Cl)cc31)CC2-expected1326)
        • PASSED [ 48%]
      • 1 ms
        failed(COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1327)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1327])
          array([[4]]) != array([3])
          test_input = 'COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1-expected1328)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1-expected1328])
          array([[1]]) != array([2])
          test_input = 'CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1-expected1329)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1-expected1329])
          array([[3]]) != array([5])
          test_input = 'CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1330)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1330])
          array([[16]]) != array([17])
          test_input = 'CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5'
          expected = array([17.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[16]]) == array([17])
          E Full diff:
          E - array([17])
          E ? ^
          E + array([[16]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1-expected1331)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1-expected1331])
          array([[11]]) != array([12])
          test_input = 'CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCCCCC(C)(C)c1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(=O)C[C@@H]21-expected1332)
        • PASSED [ 48%]
      • 0 ms
        passed(O=C(Cn1ccnc1)c1ccc2ccccc2c1-expected1333)
        • PASSED [ 48%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F_O-expected1334)
        • PASSED [ 48%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)CCC4(O)C(C2)N(CC2CCC2)CCC314-expected1335)
        • PASSED [ 48%]
      • 0 ms
        passed(C=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected1336)
        • PASSED [ 48%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected1337)
        • PASSED [ 48%]
      • 1 ms
        failed(CN=C(Cc1ccc2ccccc2c1)[NH2+]C_[Cl-]-expected1338)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN=C(Cc1ccc2ccccc2c1)[NH2+]C.[Cl-]-expected1338])
          array([[2]]) != array([3])
          test_input = 'CN=C(Cc1ccc2ccccc2c1)[NH2+]C.[Cl-]', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C1=C(CC2=NCNC2)CCc2ccccc21-expected1339)
        • PASSED [ 48%]
      • 0 ms
        passed(CC(Oc1cccc2ccccc12)/C(N)=N/O-expected1340)
        • PASSED [ 48%]
      • 0 ms
        passed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1_[Cl-]_[H+]-expected1341)
        • PASSED [ 48%]
        • [14:08:16] WARNING: not removing hydrogen atom without neighbors
          [14:08:16] WARNING: not removing hydrogen atom without neighbors
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)CN1CCCC1=O-expected1342)
        • PASSED [ 48%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCc2noc3cc(F)ccc23)CC1-expected1343)
        • PASSED [ 48%]
      • 0 ms
        passed(O=C(CCNNC(=O)c1ccncc1)NCc1ccccc1-expected1344)
        • PASSED [ 48%]
      • 0 ms
        passed(CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1-expected1345)
        • PASSED [ 48%]
      • 1 ms
        failed(C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C-expected1346)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C-expected1346])
          array([[5]]) != array([6])
          test_input = 'C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5-expected1347)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5-expected1347])
          array([[4]]) != array([6])
          test_input = 'CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C(c1cccnc1)N1CCOCC1-expected1348)
        • PASSED [ 48%]
      • 0 ms
        passed(NC(=O)c1cccnc1-expected1349)
        • PASSED [ 48%]
      • 0 ms
        passed(CCN(CC)C(=O)c1cccnc1-expected1350)
        • PASSED [ 48%]
      • 0 ms
        failed(CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1351)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1351])
          array([[2]]) != array([1])
          test_input = 'CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        failed(CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C-expected1352)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C-expected1352])
          array([[7]]) != array([9])
          test_input = 'CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C', expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CNCCC(Oc1ccccc1OC)c1ccccc1-expected1353)
        • PASSED [ 48%]
      • 1 ms
        failed(N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1-expected1354)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1-expected1354])
          array([[3]]) != array([2])
          test_input = 'N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 1 ms
        failed(C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C-expected1355)
        • FAILED [ 48%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C-expected1355])
          array([[1]]) != array([2])
          test_input = 'C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 4 ms
        passed(CNC/C=C(/c1ccc(Br)cc1)c1cccnc1-expected1356)
        • PASSED [ 48%]
      • 0 ms
        passed(CN1Cc2c(N)cccc2C(c2ccccc2)C1-expected1357)
        • PASSED [ 48%]
      • 0 ms
        passed(CCCCCCCCCNc1ncnc2[nH]ccc12-expected1358)
        • PASSED [ 48%]
      • 0 ms
        passed(FCC(F)(F)F-expected1359)
        • PASSED [ 49%]
      • 0 ms
        passed(Oc1ccc2c(c1)C13CCCCC1C(C2)NCC3-expected1360)
        • PASSED [ 49%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)C=CC4C(C2)NCCC341-expected1361)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C1CN=C(C2=CCCCC2)c2cc(Cl)ccc2N1-expected1362)
        • PASSED [ 49%]
      • 0 ms
        passed(COc1ccc2c(c1OC)C(=O)O[C@@H]2[C@H]1c2c(cc3c(c2OC)OCO3)CCN1C-expected1363)
        • PASSED [ 49%]
      • 0 ms
        passed(CN(C)CCON=C1c2ccccc2CCc2ccccc21-expected1364)
        • PASSED [ 49%]
      • 0 ms
        passed(Clc1ccc2c(c1)/C(=C/C1CN3CCC1CC3)c1ccccc1S2-expected1365)
        • PASSED [ 49%]
      • 0 ms
        passed(Cc1nc2c(C)cccn2c(=O)c1CCN1CCC(c2noc3cc(F)ccc23)CC1-expected1366)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12-expected1367)
        • PASSED [ 49%]
      • 0 ms
        passed(CCCCCCC(C)NN-expected1368)
        • PASSED [ 49%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C2CC2c2ccccc21-expected1369)
        • PASSED [ 49%]
      • 1 ms
        passed(O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1-expected1370)
        • PASSED [ 49%]
      • 0 ms
        passed(CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1-expected1371)
        • PASSED [ 49%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2CC(=O)c2ccccc21-expected1372)
        • PASSED [ 49%]
      • 0 ms
        passed(CC(Cc1ccccc1)[N+](C)([O-])Cc1ccccc1-expected1373)
        • PASSED [ 49%]
      • 0 ms
        passed(NC(=O)CN1CC(O)CC1=O-expected1374)
        • PASSED [ 49%]
      • 1 ms
        failed(COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C-expected1375)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C-expected1375])
          array([[1]]) != array([2])
          test_input = 'COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O-expected1376)
        • PASSED [ 49%]
      • 0 ms
        passed(CN(C)C(=O)COC1c2ccccc2CCc2ccccc21-expected1377)
        • PASSED [ 49%]
      • 1 ms
        passed(CC(C)CCC(=O)CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1-expected1378)
        • PASSED [ 49%]
      • 0 ms
        passed(CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21-expected1379)
        • PASSED [ 49%]
      • 0 ms
        passed(COc1ccc(N2C[C@H](CN3CCC(O)(c4ccc5c(c4)OCO5)CC3)OC2=O)cc1-expected1380)
        • PASSED [ 49%]
      • 0 ms
        passed(Nc1cc(OCC2CC2)c(C(=O)NC2CN3CCC2CC3)cc1Cl-expected1381)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C(NC(=O)c1ccccc1)NC1CCN(Cc2ccc3ccccc3c2)CC1-expected1382)
        • PASSED [ 49%]
      • 0 ms
        passed(CC1OC(C)OC(C)O1-expected1383)
        • PASSED [ 49%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384])
          array([[3]]) != array([4])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(C#CCN(C)Cc1ccccc1-expected1385)
        • PASSED [ 49%]
      • 0 ms
        passed(Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1-expected1386)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C(CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1)N1CCC2(CC1)OCCO2-expected1387)
        • PASSED [ 49%]
      • 0 ms
        passed(OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected1388)
        • PASSED [ 49%]
      • 0 ms
        failed(CC(OC(N)=O)C(C)C(C)OC(N)=O-expected1389)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(OC(N)=O)C(C)C(C)OC(N)=O-expected1389])
          array([[4]]) != array([6])
          test_input = 'CC(OC(N)=O)C(C)C(C)OC(N)=O', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCCCCN[C@@]12C=CC(=O)[C@@H]3Oc4c(O)ccc5c4[C@@]31CCN(C)[C@@H]2C5-expected1390)
        • PASSED [ 49%]
      • 0 ms
        passed(OCC1(CO)COC(C(Cl)(Cl)Cl)OC1-expected1391)
        • PASSED [ 49%]
      • 0 ms
        failed(CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392])
          array([[0]]) != array([1])
          test_input = 'CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(c1ccc(-c2nc(N3CCNCC3)cc3ccccc23)cc1-expected1393)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C1[C@H]2CCCC[C@H]2C(=O)N1CCCCN1CCN(c2nsc3ccccc23)CC1-expected1394)
        • PASSED [ 49%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1395)
        • PASSED [ 49%]
      • 0 ms
        passed(OC(OCC(COC(O)C(Cl)(Cl)Cl)(COC(O)C(Cl)(Cl)Cl)COC(O)C(Cl)(Cl)Cl)C(Cl)(Cl)Cl-expected1396)
        • PASSED [ 49%]
      • 0 ms
        passed(NC(=O)NC(=O)Cc1ccccc1-expected1397)
        • PASSED [ 49%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1-expected1398)
        • PASSED [ 49%]
      • 0 ms
        passed(CCC(C(=O)NC(N)=O)c1ccccc1-expected1399)
        • PASSED [ 49%]
      • 0 ms
        passed(CC1NCCOC1c1ccccc1-expected1400)
        • PASSED [ 49%]
      • 0 ms
        passed(CC(COc1ccccc1)NN-expected1401)
        • PASSED [ 49%]
      • 0 ms
        passed(CN1C(=O)CC(c2ccccc2)C1=O-expected1402)
        • PASSED [ 49%]
      • 0 ms
        failed(O=C([O-])c1ccccc1Oc1ccccc1-expected1403)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C([O-])c1ccccc1Oc1ccccc1-expected1403])
          array([[3]]) != array([2])
          test_input = 'O=C([O-])c1ccccc1Oc1ccccc1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected1404)
        • PASSED [ 49%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(c2ccccc2)C1=O-expected1405)
        • PASSED [ 49%]
      • 0 ms
        passed(O=C(c1ccccn1)N1CCN(Cc2ccccc2)CC1-expected1406)
        • PASSED [ 49%]
      • 0 ms
        passed(CCC[C@]1(c2cccc(O)c2)CCN(C)C[C@@H]1C-expected1407)
        • PASSED [ 49%]
      • 0 ms
        failed(CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1-expected1408)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1-expected1408])
          array([[3]]) != array([4])
          test_input = 'CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(c1ccc(-c2cc(CCC3CCNCC3)c3ccccc3n2)cc1-expected1409)
        • PASSED [ 49%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCC(CCO)CC1)c1ccccc1S2-expected1410)
        • PASSED [ 49%]
      • 1 ms
        failed(O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1-expected1411)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1-expected1411])
          array([[6]]) != array([7])
          test_input = 'O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CN1CCN(c2cc3c(nn2)Oc2ccccc2N3C)CC1-expected1412)
        • PASSED [ 49%]
      • 1 ms
        failed(CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413)
        • FAILED [ 49%]
        • test_featurizers.py:33 (test_num_rotable_bond_featurizer[CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413])
          array([[23]]) != array([24])
          test_input = 'CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1'
          expected = array([24.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_rotable"),
          )
          def test_num_rotable_bond_featurizer(test_input, expected):
          featurizer = NumRotableBondsFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[23]]) == array([24])
          E Full diff:
          E - array([24])
          E ? ^
          E + array([[23]])
          E ? + ^^
          test_featurizers.py:44: AssertionError
      • 0 ms
        passed(CCc1c(C)[nH]c2c1C(=O)[C@@H]1CN(C)CC[C@H]1C2-expected1414)
        • PASSED [ 49%]
      • 0 ms
        passed(NC(=O)CN1CCCC1=O-expected1415)
        • PASSED [ 50%]
    • 526 ms
      test_num_hacceptor_featurizer
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12_[Cl]-expected0)
        • PASSED [ 50%]
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected1)
        • PASSED [ 50%]
      • 1 ms
        failed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected2)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected2])
          array([[6]]) != array([8])
          test_input = 'CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)NCCCOc1cccc(CN2CCCCC2)c1-expected3)
        • PASSED [ 50%]
      • 1 ms
        failed(Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected4)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected4])
          array([[6]]) != array([7])
          test_input = 'Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)C(=O)C1=O-expected5)
        • PASSED [ 50%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected6)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected6])
          array([[11]]) != array([10])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O-expected7)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O-expected7])
          array([[4]]) != array([2])
          test_input = 'Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1-expected8)
        • PASSED [ 50%]
      • 0 ms
        passed(NC(N)=NC(=O)c1nc(Cl)c(N)nc1N-expected9)
        • PASSED [ 50%]
      • 0 ms
        failed(CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O-expected10)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O-expected10])
          array([[8]]) != array([7])
          test_input = 'CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](F)[C@@H](CO)O2)c(=O)[nH]c1=O-expected11)
        • PASSED [ 50%]
      • 0 ms
        passed(ClCCl-expected12)
        • PASSED [ 50%]
      • 0 ms
        passed(CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected13)
        • PASSED [ 50%]
      • 0 ms
        passed(CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected14)
        • PASSED [ 50%]
      • 0 ms
        failed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1-expected15)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1-expected15])
          array([[8]]) != array([6])
          test_input = 'CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected16)
        • PASSED [ 50%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2-expected17)
        • PASSED [ 50%]
      • 0 ms
        passed(COc1ccc(Cl)cc1C(=O)NCCc1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1-expected18)
        • PASSED [ 50%]
      • 0 ms
        passed(Nc1nnc(-c2cccc(Cl)c2Cl)c(N)n1-expected19)
        • PASSED [ 50%]
      • 0 ms
        passed(CCCC(C)C-expected20)
        • PASSED [ 50%]
      • 0 ms
        passed(C[C@H](N)Cc1ccccc1-expected21)
        • PASSED [ 50%]
      • 1 ms
        failed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected22)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected22])
          array([[6]]) != array([5])
          test_input = 'CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2-expected23)
        • PASSED [ 50%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCc2cccs2)CC1-expected24)
        • PASSED [ 50%]
      • 0 ms
        passed(CCNC(=NC#N)NCCSCc1ncccc1Br-expected25)
        • PASSED [ 50%]
      • 0 ms
        failed(Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1-expected26)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1-expected26])
          array([[3]]) != array([2])
          test_input = 'Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1-expected27)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1-expected27])
          array([[4]]) != array([3])
          test_input = 'CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected28)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected28])
          array([[3]]) != array([6])
          test_input = 'FC(F)(F)c1ccc(N2CCNCC2)nc1Cl', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O_O-expected29)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O.O-expected29])
          array([[7]]) != array([9])
          test_input = 'CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O.O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected30)
        • PASSED [ 50%]
      • 1 ms
        failed(C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected31)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected31])
          array([[6]]) != array([8])
          test_input = 'C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected32)
        • PASSED [ 50%]
      • 0 ms
        failed(CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33])
          array([[6]]) != array([5])
          test_input = 'CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1CCN(CCc2ccccc2)CC1-expected34)
        • PASSED [ 50%]
      • 0 ms
        failed(CCOC(=O)c1cncn1C(C)c1ccccc1-expected35)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)c1cncn1C(C)c1ccccc1-expected35])
          array([[4]]) != array([3])
          test_input = 'CCOC(=O)c1cncn1C(C)c1ccccc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)c1cc(-c2nc(N)n[nH]2)ccn1-expected36)
        • PASSED [ 50%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected37)
        • PASSED [ 50%]
      • 0 ms
        passed(Nc1ccc(-c2nc3ccc(O)cc3s2)cc1I-expected38)
        • PASSED [ 50%]
      • 0 ms
        passed(CC(=O)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected39)
        • PASSED [ 50%]
      • 1 ms
        failed(CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2-expected40)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2-expected40])
          array([[4]]) != array([3])
          test_input = 'CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CO)NC(=O)C(Cl)Cl)cc1-expected41)
        • PASSED [ 50%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2ccccc2)cs1-expected42)
        • PASSED [ 50%]
      • 0 ms
        passed(Cc1cccc(C)c1OCC(C)N-expected43)
        • PASSED [ 50%]
      • 0 ms
        passed(CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C-expected44)
        • PASSED [ 50%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected45)
        • PASSED [ 50%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](O)c3ccccc3)[C@H]2SC1-expected46)
        • PASSED [ 50%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected47)
        • PASSED [ 50%]
      • 1 ms
        failed(O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1-expected48)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1-expected48])
          array([[4]]) != array([7])
          test_input = 'O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@H]1C[C@@H]2[C@@H](O)c1ccnc2ccc(OC)cc12-expected49)
        • PASSED [ 50%]
      • 0 ms
        passed(CCc1ccccc1-expected50)
        • PASSED [ 50%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2cccc(N)c2)cs1-expected51)
        • PASSED [ 50%]
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected52)
        • PASSED [ 50%]
      • 1 ms
        failed(CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1-expected53)
        • FAILED [ 50%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1-expected53])
          array([[19]]) != array([21])
          test_input = 'CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1'
          expected = array([21.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[19]]) == array([21])
          E Full diff:
          E - array([21])
          E ? ^
          E + array([[19]])
          E ? ^ ++
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected54)
        • PASSED [ 50%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1-expected55)
        • PASSED [ 50%]
      • 0 ms
        passed(CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected56)
        • PASSED [ 51%]
      • 0 ms
        passed(CNCCc1ccccn1-expected57)
        • PASSED [ 51%]
      • 1 ms
        failed(CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21_[Cl-]_[H+]-expected58)
        • FAILED [ 51%]
        • [14:08:17] WARNING: not removing hydrogen atom without neighbors
          [14:08:17] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21.[Cl-].[H+]-expected58])
          array([[1]]) != array([2])
          test_input = 'CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected59)
        • PASSED [ 51%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected60)
        • PASSED [ 51%]
      • 0 ms
        passed(CNCCCC12CCC(c3ccccc31)c1ccccc12-expected61)
        • PASSED [ 51%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected62)
        • PASSED [ 51%]
      • 1 ms
        failed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected63)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected63])
          array([[7]]) != array([6])
          test_input = 'CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1_[Na+]-expected64)
        • PASSED [ 51%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected65)
        • PASSED [ 51%]
      • 0 ms
        passed(C1CCCCC1-expected66)
        • PASSED [ 51%]
      • 0 ms
        passed(Cc1csc(N=C(N)N)n1-expected67)
        • PASSED [ 51%]
      • 0 ms
        passed(CCCN(CCC)CCc1ccc(O)c2c1CC(=O)N2-expected68)
        • PASSED [ 51%]
      • 0 ms
        passed(CN1C[C@@H]2c3cc(Cl)ccc3Oc3ccccc3[C@@H]2C1-expected69)
        • PASSED [ 51%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70])
          array([[9]]) != array([10])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected71)
        • PASSED [ 51%]
      • 0 ms
        passed(CC[N+](C)(C)Cc1ccccc1Br_Cc1ccc(S(=O)(=O)[O-])cc1-expected72)
        • PASSED [ 51%]
      • 0 ms
        failed(NCCc1cn2ccccc2n1-expected73)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCCc1cn2ccccc2n1-expected73])
          array([[3]]) != array([2])
          test_input = 'NCCc1cn2ccccc2n1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74])
          array([[5]]) != array([4])
          test_input = 'Cc1ncc([N+](=O)[O-])n1CC(O)CCl', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCN(CCC)CCc1cccc2c1CC(=O)N2-expected75)
        • PASSED [ 51%]
      • 0 ms
        passed(Clc1ccc2c(c1)[C@H]1CNC[C@H]1c1ccccc1O2-expected76)
        • PASSED [ 51%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected77)
        • PASSED [ 51%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1-expected78)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1-expected78])
          array([[14]]) != array([13])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[14]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[14]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected79)
        • PASSED [ 51%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1C(NC(C)=O)CC2-expected80)
        • PASSED [ 51%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected81)
        • PASSED [ 51%]
      • 0 ms
        passed(Cc1ncsc1CCCl-expected82)
        • PASSED [ 51%]
      • 0 ms
        passed(CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1-expected83)
        • PASSED [ 51%]
      • 0 ms
        failed(FC(F)(F)CCl-expected84)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)CCl-expected84])
          array([[0]]) != array([3])
          test_input = 'FC(F)(F)CCl', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected85)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected85])
          array([[6]]) != array([5])
          test_input = 'CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86])
          array([[8]]) != array([9])
          test_input = 'CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=CC[C@H](N)c1ccccc1-c1noc2ccccc12-expected87)
        • PASSED [ 51%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2O-expected88)
        • PASSED [ 51%]
      • 0 ms
        passed(CC(=O)Nc1ccc(O)cc1-expected89)
        • PASSED [ 51%]
      • 0 ms
        failed(CC(=O)Oc1ccccc1C(=O)O-expected90)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)Oc1ccccc1C(=O)O-expected90])
          array([[3]]) != array([4])
          test_input = 'CC(=O)Oc1ccccc1C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=c1ncnc2[nH][nH]cc1-2-expected91)
        • PASSED [ 51%]
      • 0 ms
        failed(CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O-expected92)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O-expected92])
          array([[4]]) != array([5])
          test_input = 'CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cn1c(=O)c2[nH]cnc2n(C)c1=O_Cn1c(=O)c2[nH]cnc2n(C)c1=O_NCCN-expected93)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)c2[nH]cnc2n(C)c1=O.Cn1c(=O)c2[nH]cnc2n(C)c1=O.NCCN-expected93])
          array([[12]]) != array([8])
          test_input = 'Cn1c(=O)c2[nH]cnc2n(C)c1=O.Cn1c(=O)c2[nH]cnc2n(C)c1=O.NCCN'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[12]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1-expected94)
        • PASSED [ 51%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O_O_O_O-expected95)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O.O.O.O-expected95])
          array([[6]]) != array([10])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O.O.O.O'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected96)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected96])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected97)
        • PASSED [ 51%]
      • 1 ms
        failed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2_O=C(O)CCC(=O)O-expected98)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2.O=C(O)CCC(=O)O-expected98])
          array([[8]]) != array([13])
          test_input = 'FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2.O=C(O)CCC(=O)O'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2)=NC1O-expected99)
        • PASSED [ 51%]
      • 0 ms
        failed(O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1-expected100)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1-expected100])
          array([[4]]) != array([3])
          test_input = 'O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@@]4(O)[C@@H](C2)N(C)CC[C@]314-expected101)
        • PASSED [ 51%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected102)
        • PASSED [ 51%]
      • 0 ms
        passed(CN1CCCC(CN2c3ccccc3Sc3ccccc32)C1-expected103)
        • PASSED [ 51%]
      • 0 ms
        failed(NC1=NC(=O)C(c2ccccc2)O1-expected104)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC1=NC(=O)C(c2ccccc2)O1-expected104])
          array([[3]]) != array([2])
          test_input = 'NC1=NC(=O)C(c2ccccc2)O1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)=CCN1CC[C@@]2(C)c3cc(O)ccc3C[C@@H]1[C@H]2C-expected105)
        • PASSED [ 51%]
      • 0 ms
        passed(CCc1cc(C(N)=S)ccn1-expected106)
        • PASSED [ 51%]
      • 0 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](O[C@@H]3O[C@@H]5CO[C@@H](C)O[C@H]5[C@H](O)[C@H]3O)C3COC(=O)[C@@H]32)OCO4)cc(OC)c1O-expected107)
        • PASSED [ 51%]
      • 0 ms
        failed(NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1-expected108)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1-expected108])
          array([[6]]) != array([8])
          test_input = 'NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OC(Cn1cncn1)(Cn1cncn1)c1ccc(F)cc1F-expected109)
        • PASSED [ 51%]
      • 0 ms
        passed(O=C([O-])P(=O)([O-])[O-]_[Na+]_[Na+]_[Na+]-expected110)
        • PASSED [ 51%]
      • 0 ms
        failed(NCC1(CC(=O)O)CCCCC1-expected111)
        • FAILED [ 51%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCC1(CC(=O)O)CCCCC1-expected111])
          array([[2]]) != array([3])
          test_input = 'NCC1(CC(=O)O)CCCCC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOc1ccc2ccccc2c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)[O-]_[Na+]-expected112)
        • PASSED [ 51%]
      • 0 ms
        failed(CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21-expected113)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21-expected113])
          array([[4]]) != array([5])
          test_input = 'CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C-expected114)
        • PASSED [ 52%]
      • 0 ms
        passed(COc1ccc(CCN2CCC(Nc3nc4ccccc4n3Cc3ccc(F)cc3)CC2)cc1-expected115)
        • PASSED [ 52%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected116)
        • PASSED [ 52%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected117)
        • PASSED [ 52%]
        • [14:08:17] WARNING: not removing hydrogen atom without neighbors
          [14:08:17] WARNING: not removing hydrogen atom without neighbors
      • 1 ms
        failed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected118)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected118])
          array([[5]]) != array([6])
          test_input = 'C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected119)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected119])
          array([[5]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O-expected120)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O-expected120])
          array([[5]]) != array([6])
          test_input = 'C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2-expected121)
        • PASSED [ 52%]
      • 1 ms
        failed(Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1_[Na+]-expected122)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1.[Na+]-expected122])
          array([[13]]) != array([12])
          test_input = 'Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1.[Na+]'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1-expected124)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1-expected124])
          array([[2]]) != array([3])
          test_input = 'O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCN1C[C@H](CSC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected125)
        • PASSED [ 52%]
      • 1 ms
        failed(CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126])
          array([[3]]) != array([2])
          test_input = 'CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected127)
        • PASSED [ 52%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1-expected128)
        • PASSED [ 52%]
      • 0 ms
        passed(c1ccc(C2(N3CCCCC3)CCCCC2)cc1-expected129)
        • PASSED [ 52%]
      • 0 ms
        failed(NNCCc1ccccc1_O=S(=O)(O)O-expected130)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NNCCc1ccccc1.O=S(=O)(O)O-expected130])
          array([[4]]) != array([6])
          test_input = 'NNCCc1ccccc1.O=S(=O)(O)O', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NC(=O)NC1=O-expected131)
        • PASSED [ 52%]
      • 0 ms
        passed(NC(=O)OCCCc1ccccc1-expected132)
        • PASSED [ 52%]
      • 0 ms
        passed(CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected133)
        • PASSED [ 52%]
      • 0 ms
        passed(NCC(O)c1ccc(O)c(O)c1-expected134)
        • PASSED [ 52%]
      • 1 ms
        failed(COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1-expected135)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1-expected135])
          array([[5]]) != array([6])
          test_input = 'COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected136)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected136])
          array([[6]]) != array([7])
          test_input = 'Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O-expected137)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O-expected137])
          array([[8]]) != array([6])
          test_input = 'OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]-expected138)
        • PASSED [ 52%]
      • 0 ms
        passed(O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl-expected139)
        • PASSED [ 52%]
      • 0 ms
        failed(NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O-expected140)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O-expected140])
          array([[5]]) != array([6])
          test_input = 'NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1-expected141)
        • PASSED [ 52%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142])
          array([[10]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl-expected143)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl-expected143])
          array([[4]]) != array([5])
          test_input = 'NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1-expected144)
        • PASSED [ 52%]
      • 0 ms
        failed(CC(C)(Oc1ccc(Cl)cc1)C(=O)O-expected145)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(Oc1ccc(Cl)cc1)C(=O)O-expected145])
          array([[2]]) != array([3])
          test_input = 'CC(C)(Oc1ccc(Cl)cc1)C(=O)O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1-expected146)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1-expected146])
          array([[2]]) != array([1])
          test_input = 'Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12C[C@H](O)[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2C(=O)CO-expected147)
        • PASSED [ 52%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected148)
        • PASSED [ 52%]
      • 1 ms
        failed(OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1-expected149)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1-expected149])
          array([[3]]) != array([7])
          test_input = 'OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected150)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected150])
          array([[3]]) != array([4])
          test_input = 'O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3COc3ccc(Cl)cc32)CC1-expected151)
        • PASSED [ 52%]
      • 0 ms
        failed(NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected152)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected152])
          array([[4]]) != array([5])
          test_input = 'NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CC1CC1-expected153)
        • PASSED [ 52%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@@H]4C[C@H](O)CC[C@]4(C)[C@H]3CC[C@]12C-expected154)
        • PASSED [ 52%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NCNC1=O-expected155)
        • PASSED [ 52%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)c1ccc(N)cc1-expected156)
        • PASSED [ 52%]
      • 0 ms
        passed(OC(CCN1CCCC1)(c1ccccc1)C1CCCCC1-expected157)
        • PASSED [ 52%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccccc21-expected158)
        • PASSED [ 52%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2[nH]ccc12-expected159)
        • PASSED [ 52%]
      • 1 ms
        passed(CO[C@H](C(=O)[C@@H](O)[C@@H](C)O)[C@@H]1Cc2cc3cc(O[C@H]4C[C@@H](O[C@H]5C[C@@H](O)[C@H](O)[C@@H](C)O5)[C@H](O)[C@@H](C)O4)c(C)c(O)c3c(O)c2C(=O)[C@H]1O[C@H]1C[C@@H](O[C@H]2C[C@@H](O[C@H]3C[C@](C)(O)[C@H](O)[C@@H](C)O3)[C@H](O)[C@@H](C)O2)[C@H](O)[C@@H](C)O1-expected160)
        • PASSED [ 52%]
      • 1 ms
        failed(CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161])
          array([[6]]) != array([7])
          test_input = 'CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(C1CCCCC1)N1CC(=O)N2CCc3ccccc3C2C1-expected162)
        • PASSED [ 52%]
      • 0 ms
        passed(COc1cc(Cc2cnc(N)nc2N)cc(OC)c1OC-expected163)
        • PASSED [ 52%]
      • 0 ms
        passed(COc1cc(NCc2ccc3nc(N)nc(N)c3c2C)cc(OC)c1OC-expected164)
        • PASSED [ 52%]
      • 0 ms
        passed(NC(CO)(CO)CO-expected165)
        • PASSED [ 52%]
      • 1 ms
        failed(NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12-expected166)
        • FAILED [ 52%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12-expected166])
          array([[6]]) != array([10])
          test_input = 'NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC(N)=O-expected167)
        • PASSED [ 52%]
      • 0 ms
        passed(O=c1ccc2ccccc2o1-expected168)
        • PASSED [ 52%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)c2ccc(N)cc2)cc1-expected169)
        • PASSED [ 53%]
      • 1 ms
        failed(C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C-expected170)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C-expected170])
          array([[4]]) != array([5])
          test_input = 'C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=c1c(Cc2c(O)oc3ccccc3c2=O)c(O)oc2ccccc12-expected171)
        • PASSED [ 53%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1-expected172)
        • PASSED [ 53%]
      • 0 ms
        passed(CC/C(=C(/CC)c1ccc(O)cc1)c1ccc(O)cc1-expected173)
        • PASSED [ 53%]
      • 0 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5CC[C@]5(C)[C@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected174)
        • PASSED [ 53%]
      • 0 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5C[C@@H](O)[C@]5(C)[C@@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected175)
        • PASSED [ 53%]
      • 1 ms
        failed(O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1-expected176)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1-expected176])
          array([[5]]) != array([3])
          test_input = 'O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(CN1c2ccccc2Sc2ccccc21)N(C)C-expected177)
        • PASSED [ 53%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CC(C)N(C)C)c1ccccc1S2-expected178)
        • PASSED [ 53%]
      • 0 ms
        passed(CC(C)c1cccc(C(C)C)c1O-expected179)
        • PASSED [ 53%]
      • 0 ms
        passed(CNCCCC1c2ccccc2C=Cc2ccccc21-expected180)
        • PASSED [ 53%]
      • 0 ms
        failed(O=c1cc[nH]nc1-expected181)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1cc[nH]nc1-expected181])
          array([[2]]) != array([3])
          test_input = 'O=c1cc[nH]nc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21-expected182)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21-expected182])
          array([[2]]) != array([6])
          test_input = 'Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected183)
        • PASSED [ 53%]
      • 0 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected184)
        • PASSED [ 53%]
      • 0 ms
        passed(C=CCC1(C(C)CCC)C(=O)NC(=O)NC1=O-expected185)
        • PASSED [ 53%]
      • 1 ms
        failed(O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1_[Cl-]_[H+]-expected186)
        • FAILED [ 53%]
        • [14:08:17] WARNING: not removing hydrogen atom without neighbors
          [14:08:17] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1.[Cl-].[H+]-expected186])
          array([[5]]) != array([6])
          test_input = 'O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1.[Cl-].[H+]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1C(=O)c2ccccc2C(O)=C1C1CCC(c2ccc(Cl)cc2)CC1-expected187)
        • PASSED [ 53%]
      • 1 ms
        failed(O=C(O)CCCCCCCC(=O)O-expected188)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CCCCCCCC(=O)O-expected188])
          array([[2]]) != array([4])
          test_input = 'O=C(O)CCCCCCCC(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)C(C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)CN(C)[C@H](C)[C@@H](O)[C@]1(C)O-expected189)
        • PASSED [ 53%]
      • 0 ms
        failed(CC(C[N+](C)(C)C)OC(N)=O_[Cl-]-expected190)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C[N+](C)(C)C)OC(N)=O.[Cl-]-expected190])
          array([[2]]) != array([3])
          test_input = 'CC(C[N+](C)(C)C)OC(N)=O.[Cl-]', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC(C)C[C@H]1C(=O)N2CCC[C@H]2[C@]2(O)O[C@](NC(=O)[C@@H]3C=C4c5cccc6[nH]c(Br)c(c56)C[C@H]4N(C)C3)(C(C)C)C(=O)N12-expected191)
        • PASSED [ 53%]
      • 0 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected192)
        • PASSED [ 53%]
      • 0 ms
        passed(NCCc1ccc(O)c(O)c1-expected193)
        • PASSED [ 53%]
      • 1 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected194)
        • PASSED [ 53%]
      • 0 ms
        passed(C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21_O-expected195)
        • PASSED [ 53%]
      • 0 ms
        passed(CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1_[Cl]-expected196)
        • PASSED [ 53%]
      • 1 ms
        failed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1-expected197)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1-expected197])
          array([[3]]) != array([2])
          test_input = 'Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)CNC(=O)[C@@H](C)NC(=O)[C@@H](N)Cc1ccc(O)cc1)C(N)=O-expected198)
        • PASSED [ 53%]
      • 0 ms
        passed(CN[C@@H](C)[C@H](O)c1ccccc1-expected199)
        • PASSED [ 53%]
      • 0 ms
        passed(CNC[C@H](O)c1ccc(O)c(O)c1-expected200)
        • PASSED [ 53%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected201)
        • PASSED [ 53%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C@@H]2O-expected202)
        • PASSED [ 53%]
      • 0 ms
        passed(Nc1c2c(nc3ccccc13)CCCC2-expected203)
        • PASSED [ 53%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2)c2cc(Cl)ccc21-expected204)
        • PASSED [ 53%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C1CC(=O)C(CC(C)C)CN1CC2-expected205)
        • PASSED [ 53%]
      • 0 ms
        passed(CCCCCc1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(C)=C[C@@H]21-expected206)
        • PASSED [ 53%]
      • 0 ms
        passed(COC1=CC=C2[C@H]3Cc4ccc(OC)c5c4[C@@]2(CCN3C)[C@H]1O5-expected207)
        • PASSED [ 53%]
      • 0 ms
        passed(CCSc1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected208)
        • PASSED [ 53%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCCN1C)c1ccccc1S2-expected209)
        • PASSED [ 53%]
      • 1 ms
        failed(CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected210)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected210])
          array([[5]]) != array([6])
          test_input = 'CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(N[C@@H]1C[C@H]1c1ccccc1_[Cl-]_[H+]-expected211)
        • FAILED [ 53%]
        • [14:08:17] WARNING: not removing hydrogen atom without neighbors
          [14:08:17] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[N[C@@H]1C[C@H]1c1ccccc1.[Cl-].[H+]-expected211])
          array([[1]]) != array([2])
          test_input = 'N[C@@H]1C[C@H]1c1ccccc1.[Cl-].[H+]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12-expected212)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12-expected212])
          array([[6]]) != array([4])
          test_input = 'O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CS(=O)(=O)OCCCCOS(C)(=O)=O-expected213)
        • PASSED [ 53%]
      • 0 ms
        failed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1-expected214)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1-expected214])
          array([[5]]) != array([6])
          test_input = 'CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12-expected215)
        • PASSED [ 53%]
      • 1 ms
        failed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC_O-expected216)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC.O-expected216])
          array([[6]]) != array([8])
          test_input = 'COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC.O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1-expected217)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1-expected217])
          array([[8]]) != array([7])
          test_input = 'Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2_[Br-]-expected218)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2.[Br-]-expected218])
          array([[3]]) != array([4])
          test_input = 'C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2.[Br-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CCC2=O-expected219)
        • PASSED [ 53%]
      • 0 ms
        failed(C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl-expected220)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl-expected220])
          array([[3]]) != array([4])
          test_input = 'C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C-expected221)
        • PASSED [ 53%]
      • 0 ms
        passed(CC(Cc1ccc(O)cc1)NCC(O)c1cc(O)cc(O)c1-expected222)
        • PASSED [ 53%]
      • 0 ms
        passed(O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1F-expected223)
        • PASSED [ 53%]
      • 1 ms
        failed(Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected224)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected224])
          array([[6]]) != array([8])
          test_input = 'Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(O=c1[nH]cc(F)c(=O)[nH]1-expected225)
        • FAILED [ 53%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]cc(F)c(=O)[nH]1-expected225])
          array([[2]]) != array([3])
          test_input = 'O=c1[nH]cc(F)c(=O)[nH]1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl-expected226)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl-expected226])
          array([[5]]) != array([7])
          test_input = 'NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1-expected227)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1-expected227])
          array([[8]]) != array([6])
          test_input = 'Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1_[Br-]-expected228)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1.[Br-]-expected228])
          array([[3]]) != array([4])
          test_input = 'C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1.[Br-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected229)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected229])
          array([[3]]) != array([7])
          test_input = 'O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected230)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected230])
          array([[3]]) != array([6])
          test_input = 'CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected231)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected231])
          array([[4]]) != array([7])
          test_input = 'CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CCCCC1-expected232)
        • PASSED [ 54%]
      • 0 ms
        passed(COc1cc(C(=O)N2CCOCC2)cc(OC)c1OC-expected233)
        • PASSED [ 54%]
      • 0 ms
        passed(CC(CN(C)C)CN1c2ccccc2CCc2ccccc21-expected234)
        • PASSED [ 54%]
      • 0 ms
        passed(CCCCNC(=O)OCC(C)(CCC)COC(N)=O-expected235)
        • PASSED [ 54%]
      • 0 ms
        failed(O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1-expected236)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1-expected236])
          array([[7]]) != array([6])
          test_input = 'O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(CCCC(CCC)C(=O)O-expected237)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCC(CCC)C(=O)O-expected237])
          array([[1]]) != array([2])
          test_input = 'CCCC(CCC)C(=O)O', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)C/C=C(/c1ccc(Br)cc1)c1cccnc1-expected238)
        • PASSED [ 54%]
      • 0 ms
        passed(CC(C)N=c1cc2n(-c3ccc(Cl)cc3)c3ccccc3nc-2cc1Nc1ccc(Cl)cc1-expected239)
        • PASSED [ 54%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1[C@@H](NC(C)=O)CC2-expected240)
        • PASSED [ 54%]
      • 1 ms
        failed(O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1-expected241)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1-expected241])
          array([[9]]) != array([11])
          test_input = 'O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC1CONC1=O-expected242)
        • PASSED [ 54%]
      • 0 ms
        passed(NC(=O)NO-expected243)
        • PASSED [ 54%]
      • 1 ms
        failed(CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2_[Br-]-expected244)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2.[Br-]-expected244])
          array([[3]]) != array([4])
          test_input = 'CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2.[Br-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC(N)=N/N=C/c1c(Cl)cccc1Cl-expected245)
        • PASSED [ 54%]
      • 0 ms
        passed(NC(N)=NCCN1CCCCCCC1-expected246)
        • PASSED [ 54%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2-expected247)
        • PASSED [ 54%]
      • 0 ms
        passed(NNc1nncc2ccccc12-expected248)
        • PASSED [ 54%]
      • 1 ms
        failed(NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O-expected249)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O-expected249])
          array([[5]]) != array([7])
          test_input = 'NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected250)
        • PASSED [ 54%]
      • 0 ms
        failed(NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O-expected251)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O-expected251])
          array([[5]]) != array([10])
          test_input = 'NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O', expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)Cc1ccc(C(C)C(=O)O)cc1-expected252)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)Cc1ccc(C(C)C(=O)O)cc1-expected252])
          array([[1]]) != array([2])
          test_input = 'CC(C)Cc1ccc(C(C)C(=O)O)cc1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected253)
        • PASSED [ 54%]
      • 0 ms
        failed(NCCc1cn2ccccc2n1-expected254)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCCc1cn2ccccc2n1-expected254])
          array([[3]]) != array([2])
          test_input = 'NCCc1cn2ccccc2n1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCC[C@H]2O-expected255)
        • PASSED [ 54%]
      • 1 ms
        failed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2-expected256)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2-expected256])
          array([[4]]) != array([3])
          test_input = 'Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=NN(CCCl)C(=O)NCCCl-expected257)
        • PASSED [ 54%]
      • 1 ms
        failed(CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O-expected258)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O-expected258])
          array([[12]]) != array([9])
          test_input = 'CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[12]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(O)C(O)C1O-expected259)
        • PASSED [ 54%]
      • 1 ms
        failed(CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1-expected260)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1-expected260])
          array([[2]]) != array([3])
          test_input = 'CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(c1ccccc1)c1ccc2n1CCC2C(=O)O-expected261)
        • PASSED [ 54%]
      • 0 ms
        passed(C[C@H](N)[C@H](O)c1cccc(O)c1-expected262)
        • PASSED [ 54%]
      • 0 ms
        passed(NNC(=O)c1ccncc1-expected263)
        • PASSED [ 54%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(O)c(O)c1-expected264)
        • PASSED [ 54%]
      • 0 ms
        passed(O=c1c(O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)c(-c2ccc(O)c(O)c2)oc2cc(O)cc(O)c12-expected265)
        • PASSED [ 54%]
      • 1 ms
        failed(CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected266)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected266])
          array([[7]]) != array([6])
          test_input = 'CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(CCc1ccccc1)NCC(O)c1ccc(O)c(C(N)=O)c1-expected267)
        • PASSED [ 54%]
      • 0 ms
        failed(N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O-expected268)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O-expected268])
          array([[4]]) != array([5])
          test_input = 'N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCC(O)C(O)C(O)C(O)CO-expected269)
        • PASSED [ 54%]
      • 1 ms
        failed(C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270])
          array([[10]]) != array([9])
          test_input = 'C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl-expected271)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl-expected271])
          array([[2]]) != array([3])
          test_input = 'Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1cccc(Nc2ccccc2C(=O)O)c1C-expected272)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1cccc(Nc2ccccc2C(=O)O)c1C-expected272])
          array([[2]]) != array([3])
          test_input = 'Cc1cccc(Nc2ccccc2C(=O)O)c1C', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1nc[nH]c1C-expected273)
        • PASSED [ 54%]
      • 1 ms
        failed(Clc1cccc(Cl)c1NC1=NCCN1-expected274)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1cccc(Cl)c1NC1=NCCN1-expected274])
          array([[3]]) != array([1])
          test_input = 'Clc1cccc(Cl)c1NC1=NCCN1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1-expected275)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1-expected275])
          array([[6]]) != array([5])
          test_input = 'O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COCCc1ccc(OCC(O)CNC(C)C)cc1-expected276)
        • PASSED [ 54%]
      • 0 ms
        failed(Cc1ncc([N+](=O)[O-])n1CCO-expected277)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ncc([N+](=O)[O-])n1CCO-expected277])
          array([[5]]) != array([4])
          test_input = 'Cc1ncc([N+](=O)[O-])n1CCO', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C-expected278)
        • PASSED [ 54%]
      • 0 ms
        passed(CN(C)c1ccc(O)c2c1C[C@H]1C[C@H]3[C@H](N(C)C)C(O)=C(C(N)=O)C(=O)[C@@]3(O)C(O)=C1C2=O-expected279)
        • PASSED [ 54%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected280)
        • PASSED [ 54%]
      • 1 ms
        failed(CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C_[Br-]-expected281)
        • FAILED [ 54%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C.[Br-]-expected281])
          array([[3]]) != array([4])
          test_input = 'CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C.[Br-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC(=O)c1cnccn1-expected282)
        • PASSED [ 54%]
      • 0 ms
        failed(CN(C)C(=O)Oc1ccc[n+](C)c1_[Br-]-expected283)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)C(=O)Oc1ccc[n+](C)c1.[Br-]-expected283])
          array([[2]]) != array([3])
          test_input = 'CN(C)C(=O)Oc1ccc[n+](C)c1.[Br-]', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCc1nc(N)nc(N)c1-c1ccc(Cl)cc1-expected284)
        • PASSED [ 55%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@@H]1C[C@H]2[C@H](O)c1ccnc2ccc(OC)cc12-expected285)
        • PASSED [ 55%]
      • 0 ms
        failed(NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O-expected286)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O-expected286])
          array([[3]]) != array([4])
          test_input = 'NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1_[Br-]-expected287)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1.[Br-]-expected287])
          array([[3]]) != array([4])
          test_input = 'C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1.[Br-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc(CN(CCN(C)C)c2ccccn2)cc1-expected288)
        • PASSED [ 55%]
      • 0 ms
        passed(c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2-expected289)
        • PASSED [ 55%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C-expected290)
        • PASSED [ 55%]
      • 0 ms
        passed(CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21-expected291)
        • PASSED [ 55%]
      • 1 ms
        failed(CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1-expected292)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1-expected292])
          array([[10]]) != array([12])
          test_input = 'CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected293)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected293])
          array([[5]]) != array([7])
          test_input = 'CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O-expected294)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O-expected294])
          array([[4]]) != array([5])
          test_input = 'C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1_[Cl-]_[Cl-]_[Cl-]_[H+]_[H+]_[H+]-expected295)
        • FAILED [ 55%]
        • [14:08:18] WARNING: not removing hydrogen atom without neighbors
          [14:08:18] WARNING: not removing hydrogen atom without neighbors
          [14:08:18] WARNING: not removing hydrogen atom without neighbors
          [14:08:18] WARNING: not removing hydrogen atom without neighbors
          [14:08:18] WARNING: not removing hydrogen atom without neighbors
          [14:08:18] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1.[Cl-].[Cl-].[Cl-].[H+].[H+].[H+]-expected295])
          array([[6]]) != array([8])
          test_input = 'COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1.[Cl-].[Cl-].[Cl-].[H+].[H+].[H+]'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected296)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected296])
          array([[6]]) != array([5])
          test_input = 'CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1-expected297)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1-expected297])
          array([[7]]) != array([6])
          test_input = 'Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCN2c3ccccc3Cc3ccccc3C2C1-expected298)
        • PASSED [ 55%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected299)
        • PASSED [ 55%]
      • 0 ms
        passed(CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1-expected300)
        • PASSED [ 55%]
      • 1 ms
        passed(CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected301)
        • PASSED [ 55%]
      • 0 ms
        failed(FCOC(C(F)(F)F)C(F)(F)F-expected302)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FCOC(C(F)(F)F)C(F)(F)F-expected302])
          array([[1]]) != array([8])
          test_input = 'FCOC(C(F)(F)F)C(F)(F)F', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)Nc1c(I)c(NC(C)=O)c(I)c(C(=O)[O-])c1I_[Na+]-expected303)
        • PASSED [ 55%]
      • 0 ms
        failed(CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1-expected304)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1-expected304])
          array([[4]]) != array([5])
          test_input = 'CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O-expected305)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O-expected305])
          array([[5]]) != array([4])
          test_input = 'Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N=C(N)N)[C@@H](O)[C@@H]3N=C(N)N)O[C@@H](C)[C@]2(O)C=O)O[C@@H](CO)[C@H](O)[C@H]1O-expected306)
        • PASSED [ 55%]
      • 0 ms
        failed(Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1-expected307)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1-expected307])
          array([[5]]) != array([6])
          test_input = 'Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C-expected308)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C-expected308])
          array([[5]]) != array([6])
          test_input = 'Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@H]1C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2CC[C@]3(O)C(=O)CO)[C@@]2(C)C=CC(=O)C=C12-expected309)
        • PASSED [ 55%]
      • 1 ms
        failed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected310)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected310])
          array([[3]]) != array([2])
          test_input = 'Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@H]43)[C@@H]1CC[C@@H]2O-expected311)
        • PASSED [ 55%]
      • 0 ms
        passed(CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O-expected312)
        • PASSED [ 55%]
      • 0 ms
        passed(OCc1cccnc1-expected313)
        • PASSED [ 55%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C-expected314)
        • PASSED [ 55%]
      • 0 ms
        passed(NCC(O)c1cccc(O)c1-expected315)
        • PASSED [ 55%]
      • 0 ms
        passed(CC(CCc1ccccc1)NC(C)C(O)c1ccc(O)cc1-expected316)
        • PASSED [ 55%]
      • 0 ms
        passed(C[C@]12COC(=O)C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected317)
        • PASSED [ 55%]
      • 1 ms
        failed(O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1-expected318)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1-expected318])
          array([[3]]) != array([4])
          test_input = 'O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCN2c3ncccc3Cc3ccccc3C2C1-expected319)
        • PASSED [ 55%]
      • 0 ms
        passed(Cc1ccnc2c1NC(=O)c1cccnc1N2C1CC1-expected320)
        • PASSED [ 55%]
      • 0 ms
        failed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected321)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected321])
          array([[3]]) != array([6])
          test_input = 'FC(F)(F)c1ccc(N2CCNCC2)nc1Cl', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1-expected322)
        • PASSED [ 55%]
      • 0 ms
        failed(Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1-expected323)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1-expected323])
          array([[5]]) != array([6])
          test_input = 'Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC/C(=C(\\c1ccccc1)c1ccc(OCCN(C)C)cc1)c1ccccc1-expected324)
        • PASSED [ 55%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected325)
        • PASSED [ 55%]
      • 1 ms
        failed(CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1-expected326)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1-expected326])
          array([[8]]) != array([7])
          test_input = 'CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1-expected327)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1-expected327])
          array([[6]]) != array([3])
          test_input = 'Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NS(=O)(=O)Cc1noc2ccccc12-expected328)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)Cc1noc2ccccc12-expected328])
          array([[4]]) != array([5])
          test_input = 'NS(=O)(=O)Cc1noc2ccccc12', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O-expected329)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O-expected329])
          array([[17]]) != array([18])
          test_input = 'C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O'
          expected = array([18.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[17]]) == array([18])
          E Full diff:
          E - array([18])
          E ? ^
          E + array([[17]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        failed(Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O_[Ca+2]-expected330)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O.[Ca+2]-expected330])
          array([[11]]) != array([10])
          test_input = 'Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O.[Ca+2]'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12_O_O-expected331)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O-expected331])
          array([[11]]) != array([12])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc(Cc2nccc3cc(OC)c(OC)cc23)cc1OC-expected332)
        • PASSED [ 55%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O-expected333)
        • FAILED [ 55%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O-expected333])
          array([[4]]) != array([5])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOc1ccc(NC(C)=O)cc1-expected334)
        • PASSED [ 55%]
      • 0 ms
        passed(Nc1ccc(N=Nc2ccccc2)c(N)n1-expected335)
        • PASSED [ 55%]
      • 0 ms
        passed(CN(C)CCC(c1ccccc1)c1ccccn1-expected336)
        • PASSED [ 55%]
      • 0 ms
        passed(O=C1OC(c2ccc(O)cc2)(c2ccc(O)cc2)c2ccccc21-expected337)
        • PASSED [ 55%]
      • 0 ms
        passed(CC(COc1ccccc1)N(CCCl)Cc1ccccc1-expected338)
        • PASSED [ 55%]
      • 0 ms
        passed(CCCCC1C(=O)N(c2ccccc2)N(c2ccccc2)C1=O-expected339)
        • PASSED [ 56%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)n1-expected340)
        • PASSED [ 56%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2-expected341)
        • PASSED [ 56%]
      • 0 ms
        passed(CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12-expected342)
        • PASSED [ 56%]
      • 1 ms
        failed(Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1-expected343)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1-expected343])
          array([[5]]) != array([4])
          test_input = 'Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C-expected344)
        • PASSED [ 56%]
      • 1 ms
        failed(CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345])
          array([[11]]) != array([12])
          test_input = 'CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Nc1[nH]c(=O)ncc1F-expected346)
        • PASSED [ 56%]
      • 0 ms
        passed(NC(N)=NCC1COC2(CCCCC2)O1-expected347)
        • PASSED [ 56%]
      • 0 ms
        passed(O=NN(CCCl)C(=O)NC1CCCCC1-expected348)
        • PASSED [ 56%]
      • 0 ms
        passed(O=S(=O)([O-])CCS_[Na+]-expected349)
        • PASSED [ 56%]
      • 0 ms
        passed(CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O-expected350)
        • PASSED [ 56%]
      • 0 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](OC3OC5COC(c6cccs6)OC5C(O)C3O)[C@H]3COC(=O)[C@H]23)OCO4)cc(OC)c1O-expected351)
        • PASSED [ 56%]
      • 0 ms
        failed(S=P(N1CC1)(N1CC1)N1CC1-expected352)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[S=P(N1CC1)(N1CC1)N1CC1-expected352])
          array([[1]]) != array([4])
          test_input = 'S=P(N1CC1)(N1CC1)N1CC1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        failed(CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4cc3ccc4O)[C@H](O)c3ccc(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O-expected353)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4cc3ccc4O)[C@H](O)c3ccc(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O-expected353])
          array([[25]]) != array([26])
          test_input = 'CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4...(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O'
          expected = array([26.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[25]]) == array([26])
          E Full diff:
          E - array([26])
          E ? ^
          E + array([[25]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected354)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected354])
          array([[6]]) != array([11])
          test_input = 'CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected355)
        • PASSED [ 56%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected356)
        • PASSED [ 56%]
      • 1 ms
        failed(CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1-expected357)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1-expected357])
          array([[3]]) != array([5])
          test_input = 'CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3CC[C@]12C-expected358)
        • PASSED [ 56%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12-expected359)
        • PASSED [ 56%]
      • 0 ms
        passed(CC1OC(O[C@@H]2C=C3CC[C@@H]4[C@H](CC[C@]5(C)[C@@H](c6ccc(=O)oc6)CC[C@]45O)[C@@]3(C)CC2)C(O)C(O)C1O-expected360)
        • PASSED [ 56%]
      • 1 ms
        failed(COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1-expected361)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1-expected361])
          array([[11]]) != array([10])
          test_input = 'COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1-expected362)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1-expected362])
          array([[8]]) != array([7])
          test_input = 'NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1-expected363)
        • PASSED [ 56%]
      • 1 ms
        failed(O=C(O)/C=C\\C(=O)O_O=C(O)/C=C\\C(=O)O_c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1-expected364)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)/C=C\\C(=O)O.O=C(O)/C=C\\C(=O)O.c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1-expected364])
          array([[9]]) != array([13])
          test_input = 'O=C(O)/C=C\\C(=O)O.O=C(O)/C=C\\C(=O)O.c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected365)
        • PASSED [ 56%]
      • 0 ms
        passed(CC(Cl)(Cl)Cl-expected366)
        • PASSED [ 56%]
      • 0 ms
        failed(FC(F)(F)CCl-expected367)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)CCl-expected367])
          array([[0]]) != array([3])
          test_input = 'FC(F)(F)CCl', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)CO-expected368)
        • PASSED [ 56%]
      • 0 ms
        passed(CCC(C)(C)C-expected369)
        • PASSED [ 56%]
      • 0 ms
        failed(Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O-expected370)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O-expected370])
          array([[9]]) != array([8])
          test_input = 'Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected371)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected371])
          array([[7]]) != array([6])
          test_input = 'CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2cnc[nH]2)CC1-expected372)
        • PASSED [ 56%]
      • 1 ms
        passed(COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C-expected373)
        • PASSED [ 56%]
      • 0 ms
        failed(O=C(O)c1ccccc1O-expected374)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)c1ccccc1O-expected374])
          array([[2]]) != array([3])
          test_input = 'O=C(O)c1ccccc1O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12-expected375)
        • PASSED [ 56%]
      • 0 ms
        passed(CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12-expected376)
        • PASSED [ 56%]
      • 0 ms
        passed(C[C@]12Cc3cn[nH]c3C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected377)
        • PASSED [ 56%]
      • 1 ms
        failed(O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O-expected378)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O-expected378])
          array([[7]]) != array([9])
          test_input = 'O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected379)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected379])
          array([[8]]) != array([7])
          test_input = 'CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@]2(C)OC(=O)CC[C@@H]12-expected380)
        • PASSED [ 56%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2O-expected381)
        • PASSED [ 56%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382])
          array([[10]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCC(C)CC-expected383)
        • PASSED [ 56%]
      • 0 ms
        passed(CCC(C)CC-expected384)
        • PASSED [ 56%]
      • 1 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2O-expected385)
        • PASSED [ 56%]
      • 1 ms
        failed(Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C-expected386)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C-expected386])
          array([[4]]) != array([3])
          test_input = 'Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)NCC(O)COc1ccc(CC(N)=O)cc1-expected387)
        • PASSED [ 56%]
      • 0 ms
        passed(c1ccccc1-expected388)
        • PASSED [ 56%]
      • 1 ms
        failed(CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389])
          array([[5]]) != array([4])
          test_input = 'CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1-expected390)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1-expected390])
          array([[3]]) != array([4])
          test_input = 'O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1-expected391)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1-expected391])
          array([[3]]) != array([9])
          test_input = 'OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected392)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected392])
          array([[6]]) != array([8])
          test_input = 'CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1-expected393)
        • FAILED [ 56%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1-expected393])
          array([[4]]) != array([5])
          test_input = 'CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@]2(C=O)[C@@H](C(=O)CO)CC[C@@H]12-expected394)
        • PASSED [ 56%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCCC[C@H]1CN1CCCC1-expected395)
        • PASSED [ 56%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2ccccc2[C@H]1CN1CCCC1-expected396)
        • PASSED [ 57%]
      • 0 ms
        failed(O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1-expected397)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1-expected397])
          array([[2]]) != array([5])
          test_input = 'O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2sccc2[C@H]1CN1CCCC1-expected398)
        • PASSED [ 57%]
      • 0 ms
        failed(Cn1c(=O)c2[nH]cnc2n(C)c1=O-expected399)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)c2[nH]cnc2n(C)c1=O-expected399])
          array([[5]]) != array([3])
          test_input = 'Cn1c(=O)c2[nH]cnc2n(C)c1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(=S)c2[nH]cnc2[nH]1-expected400)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=S)c2[nH]cnc2[nH]1-expected400])
          array([[4]]) != array([2])
          test_input = 'Nc1nc(=S)c2[nH]cnc2[nH]1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1ccc(S(=O)(=O)NC(=O)NN2CCCCCC2)cc1-expected401)
        • PASSED [ 57%]
      • 0 ms
        passed(CCCCNC(=O)NS(=O)(=O)c1ccc(C)cc1-expected402)
        • PASSED [ 57%]
      • 1 ms
        failed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected403)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected403])
          array([[6]]) != array([7])
          test_input = 'C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Nc1nc(N)c2nc(-c3ccccc3)c(N)nc2n1-expected404)
        • PASSED [ 57%]
      • 0 ms
        failed(NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O-expected405)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O-expected405])
          array([[5]]) != array([7])
          test_input = 'NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC(C)C1NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC1=O-expected406)
        • PASSED [ 57%]
      • 0 ms
        passed(COc1ccc(CCN(C)CCCC(C#N)(c2ccc(OC)c(OC)c2)C(C)C)cc1OC-expected407)
        • PASSED [ 57%]
      • 0 ms
        passed(CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O-expected408)
        • PASSED [ 57%]
      • 0 ms
        passed(CCC(C)=O-expected409)
        • PASSED [ 57%]
      • 0 ms
        passed(C1CC1-expected410)
        • PASSED [ 57%]
      • 0 ms
        passed(NCCCN1c2ccccc2CCc2ccccc21-expected411)
        • PASSED [ 57%]
      • 0 ms
        passed(ClCCl-expected412)
        • PASSED [ 57%]
      • 0 ms
        passed(CCOCC-expected413)
        • PASSED [ 57%]
      • 0 ms
        passed(C=COC=C-expected414)
        • PASSED [ 57%]
      • 0 ms
        failed(FC(F)OC(F)(F)C(F)Cl-expected415)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)OC(F)(F)C(F)Cl-expected415])
          array([[1]]) != array([6])
          test_input = 'FC(F)OC(F)(F)C(F)Cl', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2[nH]cnc2[C@H]1CN1CCCC1-expected416)
        • PASSED [ 57%]
      • 0 ms
        passed(CC1(C)CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected417)
        • PASSED [ 57%]
      • 1 ms
        failed(CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected418)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected418])
          array([[4]]) != array([5])
          test_input = 'CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected419)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected419])
          array([[4]]) != array([5])
          test_input = 'O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O-expected420)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O-expected420])
          array([[5]]) != array([7])
          test_input = 'O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCO-expected421)
        • PASSED [ 57%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCCCO-expected422)
        • PASSED [ 57%]
      • 4 ms
        passed(COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O-expected423)
        • PASSED [ 57%]
      • 2 ms
        passed(Cc1cn([C@H]2C[C@H](N=[N+]=[N-])[C@@H](CO)O2)c(=O)[nH]c1=O-expected424)
        • PASSED [ 57%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected425)
        • PASSED [ 57%]
      • 1 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected426)
        • PASSED [ 57%]
      • 1 ms
        failed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected427)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected427])
          array([[6]]) != array([7])
          test_input = 'CC(=O)Nc1nnc(S(N)(=O)=O)s1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=CCC1(CC=C)C(=O)NC(=O)NC1=O-expected428)
        • PASSED [ 57%]
      • 1 ms
        failed(NC12CC3CC(CC(C3)C1)C2_[Cl-]_[H+]-expected429)
        • FAILED [ 57%]
        • [14:08:19] WARNING: not removing hydrogen atom without neighbors
          [14:08:19] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[NC12CC3CC(CC(C3)C1)C2.[Cl-].[H+]-expected429])
          array([[1]]) != array([2])
          test_input = 'NC12CC3CC(CC(C3)C1)C2.[Cl-].[H+]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected430)
        • PASSED [ 57%]
      • 0 ms
        passed(CCC1(CCC(C)C)C(=O)NC(=O)NC1=O-expected431)
        • PASSED [ 57%]
      • 0 ms
        passed(CC(N)Cc1ccccc1-expected432)
        • PASSED [ 57%]
      • 0 ms
        passed(CCO-expected433)
        • PASSED [ 57%]
      • 0 ms
        passed(CCc1ccccc1-expected434)
        • PASSED [ 57%]
      • 0 ms
        passed(CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2-expected435)
        • PASSED [ 57%]
      • 1 ms
        failed(CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436])
          array([[4]]) != array([5])
          test_input = 'CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C=COCC(F)(F)F-expected437)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=COCC(F)(F)F-expected437])
          array([[1]]) != array([4])
          test_input = 'C=COCC(F)(F)F', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(FC(F)(F)C(Cl)Br-expected438)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)C(Cl)Br-expected438])
          array([[0]]) != array([3])
          test_input = 'FC(F)(F)C(Cl)Br', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCCCC-expected439)
        • PASSED [ 57%]
      • 0 ms
        passed(CCCCCC-expected440)
        • PASSED [ 57%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1C-expected441)
        • PASSED [ 57%]
      • 0 ms
        passed(CCn1ccc(=O)c(O)c1C-expected442)
        • PASSED [ 57%]
      • 0 ms
        passed(CCCCn1ccc(=O)c(O)c1C-expected443)
        • PASSED [ 57%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected444)
        • PASSED [ 57%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected445)
        • PASSED [ 57%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1CCCO-expected446)
        • PASSED [ 57%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CC-expected447)
        • PASSED [ 57%]
      • 1 ms
        failed(CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1-expected448)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1-expected448])
          array([[5]]) != array([8])
          test_input = 'CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1cc(=O)n(-c2ccccc2)n1C-expected449)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1cc(=O)n(-c2ccccc2)n1C-expected449])
          array([[3]]) != array([2])
          test_input = 'Cc1cc(=O)n(-c2ccccc2)n1C', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCc2cccc3c2[C@H]1Cc1ccc(O)c(O)c1-3-expected450)
        • PASSED [ 57%]
      • 0 ms
        passed(COC(=O)C1=CCCN(C)C1-expected451)
        • PASSED [ 57%]
      • 0 ms
        failed(O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1-expected452)
        • FAILED [ 57%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1-expected452])
          array([[4]]) != array([5])
          test_input = 'O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1_[Cl-]_[H+]-expected453)
        • FAILED [ 58%]
        • [14:08:19] WARNING: not removing hydrogen atom without neighbors
          [14:08:19] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]-expected453])
          array([[4]]) != array([5])
          test_input = 'CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(CCCN1CCC(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected454)
        • PASSED [ 58%]
      • 0 ms
        passed(CCOC(=O)c1ccc(N)cc1-expected455)
        • PASSED [ 58%]
      • 0 ms
        passed(CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O-expected456)
        • PASSED [ 58%]
      • 1 ms
        failed(CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2_O=S(=O)(O)O-expected457)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2.O=S(=O)(O)O-expected457])
          array([[4]]) != array([6])
          test_input = 'CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2.O=S(=O)(O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CC2C=CC1C2-expected458)
        • PASSED [ 58%]
      • 0 ms
        passed(CN1C(=O)NC(=O)C(C)(C2=CCCCC2)C1=O-expected459)
        • PASSED [ 58%]
      • 0 ms
        passed(CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O-expected460)
        • PASSED [ 58%]
      • 0 ms
        failed(FC(F)OC(Cl)C(F)(F)F-expected461)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)OC(Cl)C(F)(F)F-expected461])
          array([[1]]) != array([6])
          test_input = 'FC(F)OC(Cl)C(F)(F)F', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=CCC1(C(C)C#CCC)C(=O)NC(=O)N(C)C1=O-expected462)
        • PASSED [ 58%]
      • 0 ms
        failed(COC(F)(F)C(Cl)Cl-expected463)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC(F)(F)C(Cl)Cl-expected463])
          array([[1]]) != array([3])
          test_input = 'COC(F)(F)C(Cl)Cl', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC1CCCC1-expected464)
        • PASSED [ 58%]
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1-expected465)
        • PASSED [ 58%]
      • 1 ms
        failed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21-expected466)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21-expected466])
          array([[6]]) != array([8])
          test_input = 'CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1-expected467)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1-expected467])
          array([[5]]) != array([9])
          test_input = 'CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected468)
        • PASSED [ 58%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CCCC1-expected469)
        • PASSED [ 58%]
      • 0 ms
        passed(COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected470)
        • PASSED [ 58%]
      • 0 ms
        passed(O=C1CN=C(c2ccccn2)c2cc(Br)ccc2N1-expected471)
        • PASSED [ 58%]
      • 0 ms
        passed(CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1-expected472)
        • PASSED [ 58%]
      • 0 ms
        passed(CN(C)CCc1c[nH]c2ccc(O)cc12-expected473)
        • PASSED [ 58%]
      • 0 ms
        passed(CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1-expected474)
        • PASSED [ 58%]
      • 0 ms
        passed(O=C(NCc1ccccc1)OCCO-expected475)
        • PASSED [ 58%]
      • 0 ms
        passed(CCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected476)
        • PASSED [ 58%]
      • 3 ms
        failed(Cn1c(=O)c2c(ncn2C)n(C)c1=O-expected477)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)c2c(ncn2C)n(C)c1=O-expected477])
          array([[6]]) != array([3])
          test_input = 'Cn1c(=O)c2c(ncn2C)n(C)c1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=C(C)[C@@H]1CCC(C)=CC1c1c(O)cc(CCCCC)cc1O-expected478)
        • PASSED [ 58%]
      • 0 ms
        passed(CCC(C)C(CC)C(=O)NC(N)=O-expected479)
        • PASSED [ 58%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C=Cc2ccccc21-expected480)
        • PASSED [ 58%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCNC1)c1ccccc1S2-expected481)
        • PASSED [ 58%]
      • 1 ms
        failed(Cn1c(=O)[nH]c2ncn(C)c2c1=O-expected482)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)[nH]c2ncn(C)c2c1=O-expected482])
          array([[5]]) != array([3])
          test_input = 'Cn1c(=O)[nH]c2ncn(C)c2c1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCC-expected483)
        • PASSED [ 58%]
      • 0 ms
        passed(CCCO-expected484)
        • PASSED [ 58%]
      • 0 ms
        passed(CC(C)=O-expected485)
        • PASSED [ 58%]
      • 0 ms
        passed(CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected486)
        • PASSED [ 58%]
      • 0 ms
        passed(CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected487)
        • PASSED [ 58%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CC[C@@H](O)C1-expected488)
        • PASSED [ 58%]
      • 4 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected489)
        • PASSED [ 58%]
      • 1 ms
        failed(CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected490)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected490])
          array([[4]]) != array([7])
          test_input = 'CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CSc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected491)
        • PASSED [ 58%]
      • 1 ms
        failed(CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected492)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected492])
          array([[4]]) != array([6])
          test_input = 'CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1cccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)c1-expected493)
        • PASSED [ 58%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected494)
        • PASSED [ 58%]
      • 0 ms
        passed(COc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected495)
        • PASSED [ 58%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected496)
        • PASSED [ 58%]
      • 1 ms
        failed(CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497])
          array([[6]]) != array([5])
          test_input = 'CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nn1cnc2cc3ccccc3cc2c1=O-expected498)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nn1cnc2cc3ccccc3cc2c1=O-expected498])
          array([[4]]) != array([3])
          test_input = 'Nn1cnc2cc3ccccc3cc2c1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OC(O)C(Cl)(Cl)Cl-expected499)
        • PASSED [ 58%]
      • 0 ms
        passed(CN=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected500)
        • PASSED [ 58%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc21-expected501)
        • PASSED [ 58%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2Sc2ccc(Cl)cc21-expected502)
        • PASSED [ 58%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2o1-expected503)
        • PASSED [ 58%]
      • 0 ms
        passed(C[N+](C)(C)CCO-expected504)
        • PASSED [ 58%]
      • 0 ms
        passed(CN1C(=O)CC(=O)N(c2ccccc2)c2cc(Cl)ccc21-expected505)
        • PASSED [ 58%]
      • 0 ms
        failed(O=C(O)CNC(=O)c1ccccc1O-expected506)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CNC(=O)c1ccccc1O-expected506])
          array([[3]]) != array([4])
          test_input = 'O=C(O)CNC(=O)c1ccccc1O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)(=O)=O)cc21-expected507)
        • PASSED [ 58%]
      • 0 ms
        failed(FC(Br)C(F)(F)F-expected508)
        • FAILED [ 58%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(Br)C(F)(F)F-expected508])
          array([[0]]) != array([4])
          test_input = 'FC(Br)C(F)(F)F', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(Cn1cnc2c1c(=O)[nH]c(=O)n2C-expected509)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1cnc2c1c(=O)[nH]c(=O)n2C-expected509])
          array([[5]]) != array([3])
          test_input = 'Cn1cnc2c1c(=O)[nH]c(=O)n2C', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=S)NC1=O-expected510)
        • PASSED [ 59%]
      • 0 ms
        passed(Cc1ccccc1-expected511)
        • PASSED [ 59%]
      • 1 ms
        failed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2-expected512)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2-expected512])
          array([[4]]) != array([3])
          test_input = 'Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1-expected513)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccccc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected514)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(S(C)(=O)=O)cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected515)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(C)[C@@H](CN1CCCC1)N(C)C(=O)Cc1ccc(Cl)c(Cl)c1-expected516)
        • PASSED [ 59%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)[C@@H](CN1CCCC1)c1ccccc1-expected517)
        • PASSED [ 59%]
      • 0 ms
        passed(Cc1cc(N/C(O)=C2\\C(=O)c3ccccc3S(=O)(=O)N2C)no1-expected518)
        • PASSED [ 59%]
      • 0 ms
        passed(C=CCN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected519)
        • PASSED [ 59%]
      • 1 ms
        failed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21-expected520)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21-expected520])
          array([[5]]) != array([8])
          test_input = 'CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected521)
        • PASSED [ 59%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccc(Cl)cc21-expected522)
        • PASSED [ 59%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1-expected523)
        • PASSED [ 59%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected524)
        • PASSED [ 59%]
      • 1 ms
        failed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected525)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected525])
          array([[3]]) != array([4])
          test_input = 'O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C-expected526)
        • PASSED [ 59%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected527)
        • PASSED [ 59%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CC1CC1-expected528)
        • PASSED [ 59%]
      • 1 ms
        failed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2-expected529)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2-expected529])
          array([[4]]) != array([7])
          test_input = 'FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)CCO-expected530)
        • PASSED [ 59%]
      • 1 ms
        failed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1_[Cl-]_[H+]-expected531)
        • FAILED [ 59%]
        • [14:08:19] WARNING: not removing hydrogen atom without neighbors
          [14:08:19] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]-expected531])
          array([[3]]) != array([4])
          test_input = 'CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(ClC=C(Cl)Cl-expected532)
        • PASSED [ 59%]
      • 0 ms
        passed(ClC(Cl)Cl-expected533)
        • PASSED [ 59%]
      • 0 ms
        passed(CNCCc1ccccn1-expected534)
        • PASSED [ 59%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected535)
        • PASSED [ 59%]
      • 0 ms
        passed(NCCc1nccs1-expected536)
        • PASSED [ 59%]
      • 0 ms
        passed(NCCc1nc(-c2ccccc2)cs1-expected537)
        • PASSED [ 59%]
      • 0 ms
        failed(NCCc1cn2ccccc2n1-expected538)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCCc1cn2ccccc2n1-expected538])
          array([[3]]) != array([2])
          test_input = 'NCCc1cn2ccccc2n1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cccc(C)c1-expected539)
        • PASSED [ 59%]
      • 0 ms
        passed(CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1-expected540)
        • PASSED [ 59%]
      • 0 ms
        passed(Cc1cnc(N/C(O)=C2/C(=O)c3ccccc3S(=O)(=O)N2C)s1-expected541)
        • PASSED [ 59%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)C=C[C@H]3[C@H]1C5-expected542)
        • PASSED [ 59%]
      • 0 ms
        passed(O=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected543)
        • PASSED [ 59%]
      • 0 ms
        failed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21-expected544)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21-expected544])
          array([[5]]) != array([7])
          test_input = 'CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21-expected545)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21-expected545])
          array([[5]]) != array([7])
          test_input = 'CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CN1/C(=C(/O)Nc2ccccn2)C(=O)c2ccccc2S1(=O)=O-expected546)
        • PASSED [ 59%]
      • 1 ms
        failed(CS(=O)(=O)O_Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1-expected547)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CS(=O)(=O)O.Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1-expected547])
          array([[4]]) != array([5])
          test_input = 'CS(=O)(=O)O.Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected548)
        • PASSED [ 59%]
      • 0 ms
        passed(CNCCCN1c2ccccc2CCc2ccccc21-expected549)
        • PASSED [ 59%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected550)
        • PASSED [ 59%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)CC[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected551)
        • PASSED [ 59%]
      • 0 ms
        passed(CN1CCC23c4c5ccc(O)c4OC2C(O)CCC3C1C5-expected552)
        • PASSED [ 59%]
      • 0 ms
        passed(CN(C)CCOC(c1ccccc1)c1ccccc1-expected553)
        • PASSED [ 59%]
      • 1 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected554)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(CN1CCN(CCOCCO)CC1)CN1c2ccccc2Sc2ccccc21-expected555)
        • PASSED [ 59%]
      • 0 ms
        passed(COC(=O)c1ccc(C(=O)OC)cc1-expected556)
        • PASSED [ 59%]
      • 0 ms
        passed(Cc1ccccc1C-expected557)
        • PASSED [ 59%]
      • 0 ms
        passed(Cc1ccc(C)cc1-expected558)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(C)O-expected559)
        • PASSED [ 59%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected560)
        • PASSED [ 59%]
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected561)
        • PASSED [ 59%]
      • 1 ms
        failed(CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1-expected562)
        • FAILED [ 59%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1-expected562])
          array([[6]]) != array([7])
          test_input = 'CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected563)
        • PASSED [ 59%]
      • 0 ms
        passed(CN1CCN(CC(=O)N2c3ccccc3C(=O)Nc3cccnc32)CC1-expected564)
        • PASSED [ 59%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@@H](C)CN1CCCC1)c1ccccc1S2-expected565)
        • PASSED [ 59%]
      • 1 ms
        failed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1-expected566)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1-expected566])
          array([[6]]) != array([8])
          test_input = 'CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)c1-expected567)
        • PASSED [ 60%]
      • 0 ms
        passed(CN1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected568)
        • PASSED [ 60%]
      • 1 ms
        failed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1-expected569)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1-expected569])
          array([[4]]) != array([3])
          test_input = 'O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1-expected570)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1-expected570])
          array([[5]]) != array([4])
          test_input = 'O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1-expected571)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1-expected571])
          array([[5]]) != array([4])
          test_input = 'O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCN(CCO)C[C@@H]1CN1CC[C@@H](O)C1-expected572)
        • PASSED [ 60%]
      • 1 ms
        failed(CN(C)CC/C=C1/c2ccccc2COc2ccccc21_[Cl-]_[H+]-expected573)
        • FAILED [ 60%]
        • [14:08:20] WARNING: not removing hydrogen atom without neighbors
          [14:08:20] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CC/C=C1/c2ccccc2COc2ccccc21.[Cl-].[H+]-expected573])
          array([[2]]) != array([3])
          test_input = 'CN(C)CC/C=C1/c2ccccc2COc2ccccc21.[Cl-].[H+]'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 3 ms
        failed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1_O=C(O)CCC(=O)O-expected574)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CCOC(C)(c1ccccc1)c1ccccn1.O=C(O)CCC(=O)O-expected574])
          array([[5]]) != array([7])
          test_input = 'CN(C)CCOC(C)(c1ccccc1)c1ccccn1.O=C(O)CCC(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(CCCN1CC=C(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected575)
        • PASSED [ 60%]
      • 0 ms
        passed(C/C=C(\\CC)C(=O)NC(N)=O-expected576)
        • PASSED [ 60%]
      • 0 ms
        passed(CCC(C)(CC)OC(N)=O-expected577)
        • PASSED [ 60%]
      • 1 ms
        failed(Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2-expected578)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2-expected578])
          array([[4]]) != array([3])
          test_input = 'Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCc1ccccc1-n1c(C)nc2ccccc2c1=O-expected579)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCc1ccccc1-n1c(C)nc2ccccc2c1=O-expected579])
          array([[3]]) != array([2])
          test_input = 'CCc1ccccc1-n1c(C)nc2ccccc2c1=O', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 3 ms
        failed(CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580])
          array([[7]]) != array([6])
          test_input = 'CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C#CC(O)(/C=C/Cl)CC-expected581)
        • PASSED [ 60%]
      • 1 ms
        passed(C#CC1(OC(N)=O)CCCCC1-expected582)
        • PASSED [ 60%]
      • 0 ms
        passed(CNCCc1ccccn1-expected583)
        • PASSED [ 60%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected584)
        • PASSED [ 60%]
      • 0 ms
        passed(NCCc1nccs1-expected585)
        • PASSED [ 60%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2c[nH]cn2)CC1-expected586)
        • PASSED [ 60%]
      • 3 ms
        passed(CC[C@H](NC(=O)c1c(O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected587)
        • PASSED [ 60%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCN(C)C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected588)
        • PASSED [ 60%]
      • 1 ms
        failed(CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected589)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected589])
          array([[4]]) != array([5])
          test_input = 'CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected590)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected590])
          array([[4]]) != array([5])
          test_input = 'CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected591)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected591])
          array([[5]]) != array([6])
          test_input = 'CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccn2)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected592)
        • PASSED [ 60%]
      • 1 ms
        failed(C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1-expected593)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1-expected593])
          array([[6]]) != array([9])
          test_input = 'C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC1(C)CC(=O)NC1=O-expected594)
        • PASSED [ 60%]
      • 0 ms
        passed(CCc1ccc2c(c1)N(CC(C)CN(C)C)c1ccccc1S2-expected595)
        • PASSED [ 60%]
      • 1 ms
        failed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected596)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected596])
          array([[4]]) != array([7])
          test_input = 'OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected597)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected597])
          array([[5]]) != array([8])
          test_input = 'OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected598)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected598])
          array([[3]]) != array([4])
          test_input = 'CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1cc2c3c(c1O)C1(C=CC(=O)C=C1)CC3N(C)CC2-expected599)
        • PASSED [ 60%]
      • 0 ms
        passed(CCC1(c2ccccc2)CCC(=O)NC1=O-expected600)
        • PASSED [ 60%]
      • 1 ms
        failed(O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected601)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected601])
          array([[3]]) != array([4])
          test_input = 'O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12-expected602)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12-expected602])
          array([[1]]) != array([3])
          test_input = 'Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1nccc2c1[nH]c1ccccc12-expected603)
        • PASSED [ 60%]
      • 0 ms
        passed(O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1-expected604)
        • PASSED [ 60%]
      • 0 ms
        passed(CCNCc1c(CSC)cnc(C)c1O-expected605)
        • PASSED [ 60%]
      • 0 ms
        passed(CN1/C(=C(\\O)Nc2ccccn2)C(=O)c2sccc2S1(=O)=O-expected606)
        • PASSED [ 60%]
      • 0 ms
        passed(CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected607)
        • PASSED [ 60%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)C1CCCC[C@H]1N1CCCC1-expected608)
        • PASSED [ 60%]
      • 0 ms
        passed(CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected609)
        • PASSED [ 60%]
      • 0 ms
        passed(C#CCC1(OC(N)=O)CCCCC1-expected610)
        • PASSED [ 60%]
      • 1 ms
        failed(OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1_[Cl-]_[Cl-]_[H+]_[H+]-expected611)
        • FAILED [ 60%]
        • [14:08:20] WARNING: not removing hydrogen atom without neighbors
          [14:08:20] WARNING: not removing hydrogen atom without neighbors
          [14:08:20] WARNING: not removing hydrogen atom without neighbors
          [14:08:20] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1.[Cl-].[Cl-].[H+].[H+]-expected611])
          array([[5]]) != array([10])
          test_input = 'OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1.[Cl-].[Cl-].[H+].[H+]'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@H]4[C@@H](C2)N(C)CC[C@]314-expected612)
        • PASSED [ 60%]
      • 0 ms
        passed(CCC(O)(COC(N)=O)c1ccccc1-expected613)
        • PASSED [ 60%]
      • 0 ms
        passed(OCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected614)
        • PASSED [ 60%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccccc21-expected615)
        • PASSED [ 60%]
      • 0 ms
        passed(CNC1(c2ccccc2Cl)CCCCC1=O-expected616)
        • PASSED [ 60%]
      • 0 ms
        failed(O=C(O)c1cc(=O)c2ccccc2[nH]1-expected617)
        • FAILED [ 60%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)c1cc(=O)c2ccccc2[nH]1-expected617])
          array([[2]]) != array([4])
          test_input = 'O=C(O)c1cc(=O)c2ccccc2[nH]1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected618)
        • PASSED [ 60%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected619)
        • PASSED [ 60%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected620)
        • PASSED [ 60%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected621)
        • PASSED [ 60%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected622)
        • PASSED [ 60%]
      • 1 ms
        failed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected623)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected623])
          array([[6]]) != array([5])
          test_input = 'CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)c1cc(-c2n[nH]c(N)n2)ccn1-expected624)
        • PASSED [ 61%]
      • 4 ms
        failed(Cn1c(=O)c2nc[nH]c2n(C)c1=O-expected625)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)c2nc[nH]c2n(C)c1=O-expected625])
          array([[5]]) != array([3])
          test_input = 'Cn1c(=O)c2nc[nH]c2n(C)c1=O', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1-expected626)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1-expected626])
          array([[3]]) != array([5])
          test_input = 'O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected627)
        • PASSED [ 61%]
      • 0 ms
        passed(CCN(CC)CC(=O)Nc1c(C)cccc1C-expected628)
        • PASSED [ 61%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2Cl)=NC1O-expected629)
        • PASSED [ 61%]
      • 0 ms
        passed(CC(C)N1CCC(N(C(=O)Cc2ccccc2)c2ccc(Cl)cc2)CC1-expected630)
        • PASSED [ 61%]
      • 0 ms
        passed(CN(C)CCOC(=O)COc1ccc(Cl)cc1-expected631)
        • PASSED [ 61%]
      • 1 ms
        failed(Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl-expected632)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl-expected632])
          array([[3]]) != array([2])
          test_input = 'Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCN=C(c2ccccc2)c2cc(Cl)ccc21-expected633)
        • PASSED [ 61%]
      • 0 ms
        passed(CCCC(C)(COC(N)=O)COC(N)=O-expected634)
        • PASSED [ 61%]
      • 0 ms
        failed(NCCn1ncc2cc(Cl)c(Cl)cc21-expected635)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCCn1ncc2cc(Cl)c(Cl)cc21-expected635])
          array([[3]]) != array([2])
          test_input = 'NCCn1ncc2cc(Cl)c(Cl)cc21', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1-expected636)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1-expected636])
          array([[7]]) != array([6])
          test_input = 'Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1-expected637)
        • PASSED [ 61%]
      • 0 ms
        failed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected638)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected638])
          array([[7]]) != array([5])
          test_input = 'Nc1nc(=O)c2ncn(COCCO)c2[nH]1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1-expected639)
        • PASSED [ 61%]
      • 0 ms
        failed(NCCCNCCSP(=O)(O)O-expected640)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCCCNCCSP(=O)(O)O-expected640])
          array([[4]]) != array([6])
          test_input = 'NCCCNCCSP(=O)(O)O', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1cc(CCN)cc(OC)c1OC-expected641)
        • PASSED [ 61%]
      • 1 ms
        failed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21-expected642)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21-expected642])
          array([[4]]) != array([5])
          test_input = 'CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN[C@@H](C)Cc1ccccc1-expected643)
        • PASSED [ 61%]
      • 0 ms
        failed(Cc1ccccc1-n1c(C)nc2ccccc2c1=O-expected644)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccccc1-n1c(C)nc2ccccc2c1=O-expected644])
          array([[3]]) != array([2])
          test_input = 'Cc1ccccc1-n1c(C)nc2ccccc2c1=O', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccccc1OCC(O)COC(N)=O-expected645)
        • PASSED [ 61%]
      • 0 ms
        passed(COc1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected646)
        • PASSED [ 61%]
      • 0 ms
        passed(COc1ccc2c(c1)N(C[C@H](C)CN(C)C)c1ccccc1S2-expected647)
        • PASSED [ 61%]
      • 0 ms
        passed(C#CC(C)(O)CC-expected648)
        • PASSED [ 61%]
      • 0 ms
        passed(COC(=O)C(c1ccccc1)C1CCCCN1-expected649)
        • PASSED [ 61%]
      • 0 ms
        passed(CCC1(CC)C(=O)NCC(C)C1=O-expected650)
        • PASSED [ 61%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)[C@@H](O)[C@H](O)[C@H]2O)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected651)
        • PASSED [ 61%]
      • 1 ms
        failed(Nc1ccc(C(=O)O)c(O)c1-expected652)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ccc(C(=O)O)c(O)c1-expected652])
          array([[3]]) != array([4])
          test_input = 'Nc1ccc(C(=O)O)c(O)c1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1-expected653)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1-expected653])
          array([[8]]) != array([5])
          test_input = 'Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)N/N=C1/N=CN=C1C(N)=O-expected654)
        • PASSED [ 61%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(C)=O)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected655)
        • PASSED [ 61%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656])
          array([[10]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1CC(=O)N(c2ccccc2)c2cc(Cl)ccc2N1-expected657)
        • PASSED [ 61%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccccc21-expected658)
        • PASSED [ 61%]
      • 0 ms
        passed(C[C@@H](CN1CC(=O)NC(=O)C1)N1CC(=O)NC(=O)C1-expected659)
        • PASSED [ 61%]
      • 1 ms
        failed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2_O=C(O)/C=C\\C(=O)O-expected660)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2.O=C(O)/C=C\\C(=O)O-expected660])
          array([[5]]) != array([7])
          test_input = 'Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2.O=C(O)/C=C\\C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1-expected661)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1-expected661])
          array([[3]]) != array([4])
          test_input = 'Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(O)C=C[C@H]3[C@H]1C5-expected662)
        • PASSED [ 61%]
      • 0 ms
        passed(CN1CC=C(c2ccccc2)CC1-expected663)
        • PASSED [ 61%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected664)
        • PASSED [ 61%]
      • 0 ms
        passed(CN1CCC[C@H]1c1cccnc1-expected665)
        • PASSED [ 61%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1-expected666)
        • PASSED [ 61%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1-expected667)
        • PASSED [ 61%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2CCc2ccccc21-expected668)
        • PASSED [ 61%]
      • 0 ms
        passed(Cc1ccccc1C(OCCN(C)C)c1ccccc1-expected669)
        • PASSED [ 61%]
      • 0 ms
        passed(COc1ccc2c(c1)[C@]13CCCC[C@@H]1[C@H](C2)N(C)CC3-expected670)
        • PASSED [ 61%]
      • 1 ms
        passed(CN1C[C@H](C(=O)N[C@]2(C)O[C@@]3(O)[C@@H]4CCCN4C(=O)[C@H](Cc4ccccc4)N3C2=O)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected671)
        • PASSED [ 61%]
      • 0 ms
        passed(CCN(CC)C(=S)SSC(=S)N(CC)CC-expected672)
        • PASSED [ 61%]
      • 1 ms
        failed(O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673])
          array([[2]]) != array([5])
          test_input = 'O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC[C@@H](CO)NCCN[C@@H](CC)CO-expected675)
        • PASSED [ 61%]
      • 0 ms
        passed(CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC-expected676)
        • PASSED [ 61%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O-expected677)
        • FAILED [ 61%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O-expected677])
          array([[6]]) != array([8])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CNCC(O)c1ccc(O)c(O)c1-expected678)
        • PASSED [ 61%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)CC(O)(C(=O)CO)CC3O-expected679)
        • PASSED [ 62%]
      • 0 ms
        passed(C=CCSCC(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)[O-]_[Na+]-expected680)
        • PASSED [ 62%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O-expected681)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O-expected681])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected682)
        • PASSED [ 62%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683])
          array([[10]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected684)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected684])
          array([[7]]) != array([9])
          test_input = 'CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NC(C(=O)O)N2CCN(CCO)CC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected685)
        • PASSED [ 62%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O[C@H]2O[C@H](CO)[C@@H](N)[C@H](O)[C@H]2O)O[C@H]2C[C@@H](N)[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N)C[C@@H]3N)O[C@@H]2[C@@H]1O-expected686)
        • PASSED [ 62%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected687)
        • PASSED [ 62%]
      • 1 ms
        failed(CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1-expected688)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1-expected688])
          array([[8]]) != array([9])
          test_input = 'CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CO[C@H]1[C@@H](O)[C@H](N)[C@@H](O[C@H]2O[C@H](C(C)N)CC[C@H]2N)[C@H](O)[C@@H]1N(C)C(=O)CN-expected689)
        • PASSED [ 62%]
      • 1 ms
        failed(C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690])
          array([[10]]) != array([11])
          test_input = 'C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected691)
        • PASSED [ 62%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected692)
        • PASSED [ 62%]
      • 0 ms
        passed(NC(CO)C(=O)NNCc1ccc(O)c(O)c1O-expected693)
        • PASSED [ 62%]
      • 0 ms
        passed(CC(C)COCC(CN(Cc1ccccc1)c1ccccc1)N1CCCC1-expected694)
        • PASSED [ 62%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@H]1C-expected695)
        • PASSED [ 62%]
      • 0 ms
        passed(NCCC(O)CNC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O-expected696)
        • PASSED [ 62%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1-expected697)
        • PASSED [ 62%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698])
          array([[6]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699])
          array([[6]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(O)cccc1C3=O-expected700)
        • PASSED [ 62%]
      • 1 ms
        failed(NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701])
          array([[12]]) != array([14])
          test_input = 'NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1-expected702)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1-expected702])
          array([[5]]) != array([6])
          test_input = 'N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1-expected703)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1-expected703])
          array([[6]]) != array([7])
          test_input = 'CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1-expected704)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1-expected704])
          array([[5]]) != array([6])
          test_input = 'CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1-expected706)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1-expected706])
          array([[10]]) != array([11])
          test_input = 'Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1-expected707)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1-expected707])
          array([[9]]) != array([10])
          test_input = 'NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1_[Na+]-expected708)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1.[Na+]-expected708])
          array([[11]]) != array([13])
          test_input = 'Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1.[Na+]'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1-expected709)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1-expected709])
          array([[10]]) != array([11])
          test_input = 'Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1-expected710)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1-expected710])
          array([[9]]) != array([10])
          test_input = 'Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1-expected711)
        • PASSED [ 62%]
      • 1 ms
        failed(CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712])
          array([[9]]) != array([10])
          test_input = 'CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected713)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected713])
          array([[10]]) != array([11])
          test_input = 'COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected714)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected714])
          array([[9]]) != array([10])
          test_input = 'C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1-expected715)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1-expected715])
          array([[11]]) != array([12])
          test_input = 'CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1-expected716)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1-expected716])
          array([[6]]) != array([7])
          test_input = 'CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1-expected717)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1-expected717])
          array([[9]]) != array([10])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12-expected718)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12-expected718])
          array([[8]]) != array([9])
          test_input = 'O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CS/C=C\\C#N)[C@H]2SC1-expected719)
        • PASSED [ 62%]
      • 1 ms
        failed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1-expected720)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1-expected720])
          array([[10]]) != array([12])
          test_input = 'C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[10]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@H]12)c1csc(N)n1-expected721)
        • PASSED [ 62%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSCC#N)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected722)
        • PASSED [ 62%]
      • 1 ms
        failed(CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected723)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected723])
          array([[13]]) != array([14])
          test_input = 'CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1-expected724)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1-expected724])
          array([[13]]) != array([15])
          test_input = 'CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1'
          expected = array([15.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([15])
          E Full diff:
          E - array([15])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12-expected725)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12-expected725])
          array([[12]]) != array([13])
          test_input = 'O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12-expected726)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12-expected726])
          array([[11]]) != array([12])
          test_input = 'NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected727)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected727])
          array([[14]]) != array([15])
          test_input = 'CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21'
          expected = array([15.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[14]]) == array([15])
          E Full diff:
          E - array([15])
          E ? ^
          E + array([[14]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)CCn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3csc(N)n3)[C@H]2SC1-expected728)
        • PASSED [ 62%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1-expected730)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1-expected730])
          array([[12]]) != array([13])
          test_input = 'Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)/C(=N\\OC)c3csc(N)n3)[C@H]2SC1_[Na+]-expected731)
        • PASSED [ 62%]
      • 1 ms
        failed(C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1_O-expected732)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1.O-expected732])
          array([[6]]) != array([8])
          test_input = 'C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1.O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)[C@H]2SC1-expected733)
        • PASSED [ 62%]
      • 1 ms
        failed(COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1-expected734)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1-expected734])
          array([[6]]) != array([7])
          test_input = 'COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1-expected735)
        • FAILED [ 62%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1-expected735])
          array([[7]]) != array([9])
          test_input = 'CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cn3nnc(C)n3)CS[C@H]12)c1csc(N)n1-expected736)
        • PASSED [ 63%]
      • 0 ms
        passed(O=C(Cn1cnnn1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nncs3)CS[C@H]12-expected737)
        • PASSED [ 63%]
      • 1 ms
        failed(Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1_O_O-expected738)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1.O.O-expected738])
          array([[8]]) != array([12])
          test_input = 'Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1.O.O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739])
          array([[12]]) != array([13])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(/C=C/Sc3n[nH]c(=O)c(=O)n3CC=O)CS[C@H]12)c1csc(N)n1-expected740)
        • PASSED [ 63%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741])
          array([[11]]) != array([13])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1-expected742)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1-expected742])
          array([[9]]) != array([10])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743])
          array([[9]]) != array([10])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected744)
        • PASSED [ 63%]
      • 0 ms
        passed(COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12-expected745)
        • PASSED [ 63%]
      • 1 ms
        failed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1-expected746)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1-expected746])
          array([[13]]) != array([14])
          test_input = 'CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1_[Na+]-expected747)
        • PASSED [ 63%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1_O_O-expected748)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O-expected748])
          array([[7]]) != array([10])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749])
          array([[8]]) != array([10])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750])
          array([[7]]) != array([8])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)C1=C(O)[C@@]2(O)C(=O)c3c(c(C)c4ccc(C)c(O)c4c3O)C[C@H]2[C@@H](N)C1=O-expected751)
        • PASSED [ 63%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(OC)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected752)
        • PASSED [ 63%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](O)[C@@H](O)[C@H]2O)N(C)C1-expected753)
        • PASSED [ 63%]
      • 1 ms
        failed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1-expected754)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1-expected754])
          array([[8]]) != array([10])
          test_input = 'CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1-expected755)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1-expected755])
          array([[5]]) != array([6])
          test_input = 'COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected756)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected756])
          array([[11]]) != array([10])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O-expected757)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O-expected757])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC=CCC(C)C(O)C1C(=O)NC(CC)C(=O)N(C)CC(=O)N(C)C(CC(C)C)C(=O)NC(C(C)C)C(=O)N(C)C(CC(C)C)C(=O)NC(C)C(=O)NC(C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(C(C)C)C(=O)N1C-expected758)
        • PASSED [ 63%]
      • 1 ms
        passed(Cc1c2oc3c(C)ccc(C(=O)NC4C(=O)NC(C(C)C)C(=O)N5CCCC5C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC4C)c3nc-2c(C(=O)NC2C(=O)NC(C(C)C)C(=O)N3CCCC3C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC2C)c(N)c1=O-expected759)
        • PASSED [ 63%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760])
          array([[10]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O-expected761)
        • PASSED [ 63%]
      • 0 ms
        passed(NCC1CCC(N)C(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)O1-expected762)
        • PASSED [ 63%]
      • 1 ms
        failed(Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected763)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected763])
          array([[6]]) != array([7])
          test_input = 'Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@@H]3[C@@H](O)[C@H](O)[C@@H](N=C(N)N)[C@H](O)[C@H]3N=C(N)N)O[C@@H](C)[C@]2(O)CO)O[C@@H](CO)[C@H](O)[C@H]1O-expected764)
        • PASSED [ 63%]
      • 1 ms
        passed(COc1ccc(-c2cc(=O)c3c(O)cc(O[C@@H]4O[C@H](CO[C@@H]5O[C@@H](C)[C@H](O)[C@@H](O)[C@H]5O)[C@@H](O)[C@H](O)[C@H]4O)cc3o2)cc1O-expected765)
        • PASSED [ 63%]
      • 0 ms
        passed(CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1-expected766)
        • PASSED [ 63%]
      • 1 ms
        passed(CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC-expected767)
        • PASSED [ 63%]
      • 0 ms
        passed(OCCN(CCO)c1nc(N2CCCCC2)c2nc(N(CCO)CCO)nc(N3CCCCC3)c2n1-expected768)
        • PASSED [ 63%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)[C@@H]2N[C@@H](COCCOC)O[C@H]([C@H]2C)[C@]1(C)O-expected769)
        • PASSED [ 63%]
      • 1 ms
        passed(CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C-expected770)
        • PASSED [ 63%]
      • 1 ms
        failed(C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C-expected771)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C-expected771])
          array([[21]]) != array([20])
          test_input = 'C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C'
          expected = array([20.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[21]]) == array([20])
          E Full diff:
          E - array([20])
          E ? ^
          E + array([[21]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21_[Cl]-expected772)
        • PASSED [ 63%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O-expected773)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O-expected773])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        passed(CCC(C)[C@H]1O[C@]2(CC[C@@H]1C)CC1C[C@@H](C/C=C(\\C)[C@@H](O[C@H]3C[C@H](OC)[C@@H](OC4C[C@H](OC)[C@@H](O)[C@H](C)O4)[C@H](C)O3)[C@@H](C)/C=C/C=C3\\CO[C@@H]4[C@H](O)C(C)=C[C@@H](C(=O)O1)[C@]34O)O2_CO[C@H]1CC(O[C@H]2[C@H](C)O[C@@H](O[C@@H]3/C(C)=C/C[C@@H]4CC(C[C@]5(CC[C@H](C)[C@@H](C(C)C)O5)O4)OC(=O)[C@@H]4C=C(C)[C@@H](O)[C@H]5OC/C(=C\\C=C\\[C@@H]3C)[C@]54O)C[C@@H]2OC)O[C@@H](C)[C@@H]1O-expected774)
        • PASSED [ 63%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@](O)(C(=O)CO)C[C@H]3OC1CC(N)CC(C)O1-expected775)
        • PASSED [ 63%]
      • 1 ms
        failed(CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O-expected776)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O-expected776])
          array([[22]]) != array([20])
          test_input = 'CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O'
          expected = array([20.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[22]]) == array([20])
          E Full diff:
          E - array([20])
          E ? ^
          E + array([[22]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCNCC(O)c1cccc(O)c1-expected777)
        • PASSED [ 63%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl-expected778)
        • PASSED [ 63%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected779)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected779])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)c1ccccc1OCC1=NCCN1-expected780)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)c1ccccc1OCC1=NCCN1-expected780])
          array([[3]]) != array([2])
          test_input = 'CC(C)c1ccccc1OCC1=NCCN1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected781)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected781])
          array([[4]]) != array([5])
          test_input = 'CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1-expected782)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1-expected782])
          array([[6]]) != array([7])
          test_input = 'CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21_[Na]-expected783)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21.[Na]-expected783])
          array([[12]]) != array([15])
          test_input = 'CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21.[Na]'
          expected = array([15.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([15])
          E Full diff:
          E - array([15])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected784)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected784])
          array([[14]]) != array([15])
          test_input = 'CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O'
          expected = array([15.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[14]]) == array([15])
          E Full diff:
          E - array([15])
          E ? ^
          E + array([[14]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12-expected785)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12-expected785])
          array([[5]]) != array([6])
          test_input = 'C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected786)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected786])
          array([[7]]) != array([8])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787])
          array([[7]]) != array([8])
          test_input = 'CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788)
        • FAILED [ 63%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788])
          array([[5]]) != array([6])
          test_input = 'CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CNC(C)C1CCC(N)C(OC2C(N)CC(N)C(OC3OCC(C)(O)C(NC)C3O)C2O)O1-expected789)
        • PASSED [ 63%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1-expected790)
        • PASSED [ 63%]
      • 1 ms
        passed(CC(C)CC1NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC(=O)C(CC(C)C)NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC1=O-expected791)
        • PASSED [ 63%]
      • 1 ms
        failed(Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1-expected792)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1-expected792])
          array([[5]]) != array([7])
          test_input = 'Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793])
          array([[12]]) != array([11])
          test_input = 'CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected794)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected794])
          array([[5]]) != array([6])
          test_input = 'CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(Cc1ccccc1)NO-expected795)
        • PASSED [ 64%]
      • 0 ms
        passed(CNC(C)C(O)c1ccc(O)cc1-expected796)
        • PASSED [ 64%]
      • 0 ms
        passed(Cc1cc(=O)oc2cc(O)ccc12-expected797)
        • PASSED [ 64%]
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2[C@@H](O[C@H]2C[C@H](N)[C@H](O)[C@H](C)O2)C1)C(=O)c1ccccc1C3=O-expected798)
        • PASSED [ 64%]
      • 1 ms
        failed(C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12_O-expected799)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12.O-expected799])
          array([[5]]) != array([7])
          test_input = 'C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12.O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CNC1C(O)C(OC2C(NC(=O)C(O)CN)CC(N)C(OC3OC(CN)C(O)C(O)C3O)C2O)OCC1(C)O-expected800)
        • PASSED [ 64%]
      • 1 ms
        failed(CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected801)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected801])
          array([[5]]) != array([6])
          test_input = 'CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O-expected802)
        • PASSED [ 64%]
      • 0 ms
        passed(Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected803)
        • PASSED [ 64%]
      • 1 ms
        failed(CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1-expected804)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1-expected804])
          array([[7]]) != array([8])
          test_input = 'CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](NC(=O)[C@@H](N)CC(C)C)[C@H](O)[C@H](C)O1-expected805)
        • PASSED [ 64%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)/C(=N\\OC)[C@H](C)[C@@H](O)[C@]1(C)O-expected806)
        • PASSED [ 64%]
      • 0 ms
        passed(CCCC1CC(C(=O)NC(C(C)O)C2OC(SC)C(O)C(O)C2O)N(C)C1-expected807)
        • PASSED [ 64%]
      • 1 ms
        failed(N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1_O-expected808)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1.O-expected808])
          array([[4]]) != array([6])
          test_input = 'N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1.O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1-expected809)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1-expected809])
          array([[6]]) != array([5])
          test_input = 'CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected810)
        • PASSED [ 64%]
        • [14:08:21] WARNING: not removing hydrogen atom without neighbors
          [14:08:21] WARNING: not removing hydrogen atom without neighbors
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O-expected811)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O-expected811])
          array([[4]]) != array([5])
          test_input = 'CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(CN(C)C)OC(C)(c1ccccc1)c1ccc(Cl)cc1-expected812)
        • PASSED [ 64%]
      • 0 ms
        passed(CC1OC(OC2CC(O)(C(=O)CO)Cc3c(O)c4c(c(O)c32)C(=O)c2ccccc2C4=O)CC(N)C1O-expected813)
        • PASSED [ 64%]
      • 1 ms
        failed(C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12_O_O_O-expected814)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12.O.O.O-expected814])
          array([[6]]) != array([10])
          test_input = 'C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12.O.O.O'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1-expected815)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1-expected815])
          array([[5]]) != array([6])
          test_input = 'C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816])
          array([[10]]) != array([9])
          test_input = 'C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CNC(C)C(=O)c1ccc(OC)cc1-expected817)
        • PASSED [ 64%]
      • 1 ms
        failed(COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected818)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected818])
          array([[6]]) != array([7])
          test_input = 'COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected819)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected819])
          array([[8]]) != array([9])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820])
          array([[5]]) != array([6])
          test_input = 'COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC-expected821)
        • PASSED [ 64%]
      • 1 ms
        passed(CCC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected822)
        • PASSED [ 64%]
      • 0 ms
        passed(CCCCCC1CNC(C(=O)NC(C(C)Cl)C2OC(SC)C(O)C(O)C2O)C1-expected823)
        • PASSED [ 64%]
      • 0 ms
        passed(CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12-expected824)
        • PASSED [ 64%]
      • 1 ms
        failed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21-expected825)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21-expected825])
          array([[12]]) != array([13])
          test_input = 'CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O)[C@H](N)C[C@@H]2N)[C@H](N)[C@@H](O)[C@@H]1O-expected826)
        • PASSED [ 64%]
      • 0 ms
        passed(CCN[C@@H]1C[C@H](N)[C@@H](O[C@H]2OC(CN)=CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1OC[C@](C)(O)[C@H](NC)[C@H]1O-expected827)
        • PASSED [ 64%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1-expected828)
        • PASSED [ 64%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]-expected829)
        • PASSED [ 64%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1-expected830)
        • PASSED [ 64%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12-expected831)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12-expected831])
          array([[11]]) != array([10])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C-expected832)
        • PASSED [ 64%]
      • 1 ms
        passed(COC1CC(O[C@H]2[C@H](C)[C@@H](OC3OC(C)CC(N(C)C)C3O)[C@@H](C)C[C@]3(CO3)C(=O)[C@H](C)[C@@H](O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)OC(C)C1O-expected833)
        • PASSED [ 64%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected834)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected834])
          array([[6]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1-expected835)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1-expected835])
          array([[9]]) != array([10])
          test_input = 'CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O-expected836)
        • PASSED [ 64%]
      • 1 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC(C(=O)O)C2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected837)
        • PASSED [ 64%]
      • 0 ms
        passed(CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C-expected838)
        • PASSED [ 64%]
      • 1 ms
        failed(CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O_[Na]-expected839)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O.[Na]-expected839])
          array([[4]]) != array([5])
          test_input = 'CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O.[Na]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCNC(C(=O)NC2C(=O)N3C2SC(C)(C)C3C(=O)O)c2ccccc2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected840)
        • PASSED [ 64%]
      • 1 ms
        failed(CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected841)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected841])
          array([[5]]) != array([6])
          test_input = 'CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected842)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected842])
          array([[13]]) != array([12])
          test_input = 'CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 2 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O[C@H]2CCCCO2)[C@H](C)O1-expected843)
        • PASSED [ 64%]
      • 1 ms
        failed(CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844])
          array([[8]]) != array([9])
          test_input = 'CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]-expected845)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-].[Na+]-expected845])
          array([[12]]) != array([13])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-].[Na+]'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[12]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[12]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected846)
        • FAILED [ 64%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected846])
          array([[11]]) != array([12])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected847)
        • PASSED [ 64%]
      • 0 ms
        passed(CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1-expected848)
        • PASSED [ 64%]
      • 0 ms
        passed(Cc1cnn(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected849)
        • PASSED [ 65%]
      • 1 ms
        passed(CC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected850)
        • PASSED [ 65%]
      • 0 ms
        passed(CCCNCC(O)COc1ccccc1C(=O)CCc1ccccc1-expected851)
        • PASSED [ 65%]
      • 1 ms
        failed(CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected852)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected852])
          array([[5]]) != array([6])
          test_input = 'CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(NC(CO)CO)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected853)
        • PASSED [ 65%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O-expected854)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O-expected854])
          array([[7]]) != array([9])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O-expected855)
        • PASSED [ 65%]
      • 1 ms
        passed(CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4-expected856)
        • PASSED [ 65%]
      • 0 ms
        passed(CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4-expected857)
        • PASSED [ 65%]
      • 1 ms
        passed(CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4-expected858)
        • PASSED [ 65%]
      • 0 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected859)
        • PASSED [ 65%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected860)
        • PASSED [ 65%]
      • 1 ms
        failed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861])
          array([[13]]) != array([12])
          test_input = 'CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C'
          expected = array([12.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[13]]) == array([12])
          E Full diff:
          E - array([12])
          E ? ^
          E + array([[13]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12_[Na+]-expected862)
        • PASSED [ 65%]
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](O[C@H]2C[C@H](N(C)C)[C@H](O[C@H]3C[C@@H]4O[C@H]5CC(=O)[C@H](C)O[C@H]5O[C@@H]4[C@H](C)O3)[C@H](C)O2)c2c(O)c3c(c(O)c2[C@H]1O[C@H]1C[C@H](N(C)C)[C@H](O)[C@H](C)O1)C(=O)c1cccc(O)c1C3=O-expected863)
        • PASSED [ 65%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected864)
        • PASSED [ 65%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)/C(=N/OCOCCOC)[C@H](C)[C@@H](O)[C@]1(C)O-expected865)
        • PASSED [ 65%]
      • 0 ms
        passed(COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21-expected866)
        • PASSED [ 65%]
      • 0 ms
        passed(COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C-expected867)
        • PASSED [ 65%]
      • 0 ms
        passed(COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C-expected868)
        • PASSED [ 65%]
      • 0 ms
        passed(CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O-expected869)
        • PASSED [ 65%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O)[C@@H](O[C@@H]2[C@@H](O)[C@H](O[C@H]3OC(CN)=CC[C@H]3N)[C@@H](N)C[C@H]2N)OC[C@]1(C)O-expected870)
        • PASSED [ 65%]
      • 1 ms
        passed(COC1C(O)CC(=O)OC(C)C/C=C/C=C/C(OC2CCC(N(C)C)C(C)O2)C(C)CC(CC=O)C1OC1OC(C)C(OC2CC(C)(O)C(O)C(C)O2)C(N(C)C)C1O-expected871)
        • PASSED [ 65%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O-expected872)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O-expected872])
          array([[6]]) != array([8])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12-expected873)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12-expected873])
          array([[6]]) != array([8])
          test_input = 'C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O_CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected874)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O.CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected874])
          array([[9]]) != array([11])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O.CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected875)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]-expected875])
          array([[8]]) != array([9])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-].[Na+].[Na+]'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=CC[C@@H]1/C=C(\\C)C[C@H](C)C[C@H](OC)[C@H]2O[C@@](O)(C(=O)C(=O)N3CCCC[C@H]3C(=O)O[C@H](/C(C)=C/[C@@H]3CC[C@@H](O)[C@H](OC)C3)[C@H](C)[C@@H](O)CC1=O)[C@H](C)C[C@@H]2OC-expected876)
        • PASSED [ 65%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21-expected877)
        • PASSED [ 65%]
      • 0 ms
        passed(C[C@]1(Cn2ccnn2)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected878)
        • PASSED [ 65%]
      • 2 ms
        failed(CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(=O)[C@H](NC(=O)[C@@H]4NC(=O)[C@H]4NC(=O)[C@@H](Cc5ccc(c(Cl)c5)O3)NC(=O)[C@H](N)c3ccc(O)c(c3)Oc3cc(O)cc4c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O-expected879)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(=O)[C@H](NC(=O)[C@@H]4NC(=O)[C@H]4NC(=O)[C@@H](Cc5ccc(c(Cl)c5)O3)NC(=O)[C@H](N)c3ccc(O)c(c3)Oc3cc(O)cc4c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O-expected879])
          array([[33]]) != array([34])
          test_input = 'CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(...c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O'
          expected = array([34.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[33]]) == array([34])
          E Full diff:
          E - array([34])
          E ? ^
          E + array([[33]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21-expected880)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21-expected880])
          array([[7]]) != array([9])
          test_input = 'CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O-expected881)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O-expected881])
          array([[10]]) != array([7])
          test_input = 'Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[10]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[10]])
          E ? ^^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O-expected882)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O-expected882])
          array([[5]]) != array([6])
          test_input = 'CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O-expected883)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O-expected883])
          array([[11]]) != array([13])
          test_input = 'CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O'
          expected = array([13.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[11]]) == array([13])
          E Full diff:
          E - array([13])
          E ? ^
          E + array([[11]])
          E ? + ^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1-expected884)
        • PASSED [ 65%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O[C@H]3O[C@H](CO)[C@@H](O)[C@H](N)[C@H]3O)[C@H](N)C[C@@H]2N)[C@H](N)C[C@@H]1O-expected885)
        • PASSED [ 65%]
      • 0 ms
        passed(Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1-expected886)
        • PASSED [ 65%]
      • 1 ms
        passed(CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O-expected887)
        • PASSED [ 65%]
      • 0 ms
        passed(CCCC[C@@H]1CC(=O)[C@]2(O)O[C@@H]3[C@@H](NC)[C@@H](O)[C@@H](NC)[C@H](O)[C@H]3O[C@@H]2O1-expected888)
        • PASSED [ 65%]
      • 1 ms
        failed(Cc1ccc(C(C)C)c(OCC2=NCCN2)c1-expected889)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc(C(C)C)c(OCC2=NCCN2)c1-expected889])
          array([[3]]) != array([2])
          test_input = 'Cc1ccc(C(C)C)c(OCC2=NCCN2)c1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected890)
        • PASSED [ 65%]
      • 1 ms
        failed([C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]-expected891)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[[C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]-expected891])
          array([[2]]) != array([4])
          test_input = '[C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(FC(F)(Cl)C(F)(F)Cl-expected892)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(Cl)C(F)(F)Cl-expected892])
          array([[0]]) != array([4])
          test_input = 'FC(F)(Cl)C(F)(F)Cl', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@H]1CCCC[C@@]1(c1cccs1)N1CCCCC1-expected893)
        • PASSED [ 65%]
      • 1 ms
        failed(CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C_[Cl-]_[H+]-expected894)
        • FAILED [ 65%]
        • [14:08:22] WARNING: not removing hydrogen atom without neighbors
          [14:08:22] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C.[Cl-].[H+]-expected894])
          array([[7]]) != array([5])
          test_input = 'CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C.[Cl-].[H+]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)NCCCN1CCN(c2cc(Cl)ccc2Cl)CC1-expected895)
        • PASSED [ 65%]
      • 0 ms
        passed(CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12-expected896)
        • PASSED [ 65%]
      • 0 ms
        passed(CCC(Br)(CC)C(=O)NC(=O)NC(C)=O-expected897)
        • PASSED [ 65%]
      • 0 ms
        passed(CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected898)
        • PASSED [ 65%]
      • 0 ms
        failed(CC(=O)NC(CCC(N)=O)C(=O)O-expected899)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)NC(CCC(N)=O)C(=O)O-expected899])
          array([[3]]) != array([4])
          test_input = 'CC(=O)NC(CCC(N)=O)C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected900)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected900])
          array([[3]]) != array([4])
          test_input = 'CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1-expected901)
        • PASSED [ 65%]
      • 1 ms
        failed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected902)
        • FAILED [ 65%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected902])
          array([[6]]) != array([7])
          test_input = 'CC(=O)Nc1nnc(S(N)(=O)=O)s1', expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected903)
        • PASSED [ 65%]
      • 0 ms
        passed(CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1-expected904)
        • PASSED [ 65%]
      • 1 ms
        passed(CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5-expected905)
        • PASSED [ 65%]
      • 0 ms
        passed(CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected906)
        • PASSED [ 66%]
      • 1 ms
        passed(CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1-expected907)
        • PASSED [ 66%]
      • 1 ms
        failed(C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1-expected908)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1-expected908])
          array([[6]]) != array([7])
          test_input = 'C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected909)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected909])
          array([[7]]) != array([5])
          test_input = 'Nc1nc(=O)c2ncn(COCCO)c2[nH]1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2-expected910)
        • PASSED [ 66%]
      • 0 ms
        passed(O=C(NCCN1CCN(c2ncccn2)CC1)C12CC3CC(CC(C3)C1)C2-expected911)
        • PASSED [ 66%]
      • 0 ms
        passed(CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1-expected912)
        • PASSED [ 66%]
      • 0 ms
        passed(CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl-expected913)
        • PASSED [ 66%]
      • 0 ms
        passed(CCCN(CCC)C1Cc2cccc3cc(O)cc(c23)C1-expected914)
        • PASSED [ 66%]
      • 0 ms
        passed(CC12CC(=O)[C@H]3C(CC[C@H]4C[C@H](O)CCC43C)[C@@H]1CCC2C(=O)CO-expected915)
        • PASSED [ 66%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@H](O)CC[C@]4(C)[C@H]3C(=O)C[C@]12C-expected916)
        • PASSED [ 66%]
      • 0 ms
        passed(CC(=O)C12OC(C)(C)OC1CC1C3CCC4=CC(=O)CCC4(C)C3CCC12C-expected917)
        • PASSED [ 66%]
      • 1 ms
        failed(COC1(F)C(F)(F)C1(F)Cl-expected918)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC1(F)C(F)(F)C1(F)Cl-expected918])
          array([[1]]) != array([5])
          test_input = 'COC1(F)C(F)(F)C1(F)Cl', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=CCN1CCC23c4c5ccc(O)c4OC2C2(OC)C=CC3(CC2[C@](C)(O)CCC)C1C5-expected919)
        • PASSED [ 66%]
      • 0 ms
        passed(C=CCN1C(=O)OC(C)C1=O-expected920)
        • PASSED [ 66%]
      • 0 ms
        passed(CNC[C@@H]1CN(c2ccc(OCc3cccc(Cl)c3)cc2)C(=O)O1-expected921)
        • PASSED [ 66%]
      • 1 ms
        failed(CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1_[Cl-]_[H+]-expected922)
        • FAILED [ 66%]
        • [14:08:22] WARNING: not removing hydrogen atom without neighbors
          [14:08:22] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1.[Cl-].[H+]-expected922])
          array([[5]]) != array([6])
          test_input = 'CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1.[Cl-].[H+]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1CCC2(CCC(=O)c3ccccc32)C(=O)N1-expected923)
        • PASSED [ 66%]
      • 1 ms
        failed(CC(=O)NCCn1c(C)cc(C=O)c1C-expected924)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)NCCn1c(C)cc(C=O)c1C-expected924])
          array([[3]]) != array([2])
          test_input = 'CC(=O)NCCn1c(C)cc(C=O)c1C', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F-expected925)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F-expected925])
          array([[4]]) != array([5])
          test_input = 'CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC-expected926)
        • PASSED [ 66%]
      • 0 ms
        passed(CC[C@@H](O)C(C[C@@H](C)N(C)C)(c1ccccc1)c1ccccc1-expected927)
        • PASSED [ 66%]
      • 1 ms
        failed(C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC-expected928)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC-expected928])
          array([[6]]) != array([7])
          test_input = 'C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O-expected929)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O-expected929])
          array([[3]]) != array([4])
          test_input = 'O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1-expected930)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1-expected930])
          array([[6]]) != array([7])
          test_input = 'CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO-expected931)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO-expected931])
          array([[6]]) != array([7])
          test_input = 'CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932])
          array([[7]]) != array([8])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933])
          array([[6]]) != array([7])
          test_input = 'CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)c1ccc(N)cc1-expected934)
        • PASSED [ 66%]
      • 1 ms
        failed(CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2-expected935)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2-expected935])
          array([[3]]) != array([2])
          test_input = 'CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(Cc1ccccc1)NC(C#N)c1ccccc1-expected936)
        • PASSED [ 66%]
      • 1 ms
        failed(O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21_[Cl-]-expected937)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21.[Cl-]-expected937])
          array([[1]]) != array([3])
          test_input = 'O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21.[Cl-]'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)CC)c(N)cc1OC-expected938)
        • PASSED [ 66%]
      • 0 ms
        passed(C[N+](C)([O-])CCC=C1c2ccccc2CCc2ccccc21-expected939)
        • PASSED [ 66%]
      • 0 ms
        passed(CC(C)CCOC(CN1CCCC1)c1ccccc1-expected940)
        • PASSED [ 66%]
      • 1 ms
        failed(CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected941)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected941])
          array([[2]]) != array([4])
          test_input = 'CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(Nc1cccc(-n2ccccc2=O)c1-expected942)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1cccc(-n2ccccc2=O)c1-expected942])
          array([[3]]) != array([2])
          test_input = 'Nc1cccc(-n2ccccc2=O)c1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)c1cnccn1-expected943)
        • PASSED [ 66%]
      • 0 ms
        passed(CCC(C)(C)O-expected944)
        • PASSED [ 66%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1-expected945)
        • PASSED [ 66%]
      • 0 ms
        passed(COc1ccc(C(=O)N2CCCC2=O)cc1-expected946)
        • PASSED [ 66%]
      • 0 ms
        passed(COc1cc2oc(=O)c(C)c(C)c2cc1OCCCN1CCN(c2ccccc2OC)CC1-expected947)
        • PASSED [ 66%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@H](C)CN1CCCC1)c1ccccc1S2-expected948)
        • PASSED [ 66%]
      • 0 ms
        passed(C=CCC1(C(C)C)C(=O)NC(=O)NC1=O-expected949)
        • PASSED [ 66%]
      • 0 ms
        passed(O=C1CCc2ccc(OCCCCN3CCN(c4cccc(Cl)c4Cl)CC3)cc2N1-expected950)
        • PASSED [ 66%]
      • 0 ms
        passed(O=C1C(O)=C(O)OC1C(O)CO-expected951)
        • PASSED [ 66%]
      • 1 ms
        failed(CC(=O)Oc1ccccc1C(=O)O-expected952)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)Oc1ccccc1C(=O)O-expected952])
          array([[3]]) != array([4])
          test_input = 'CC(=O)Oc1ccccc1C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN(CC)c1ccc(NC(=O)c2ccccc2N)c(C)c1-expected953)
        • PASSED [ 66%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2-expected954)
        • PASSED [ 66%]
      • 0 ms
        passed(C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected955)
        • PASSED [ 66%]
      • 0 ms
        passed(CN(C(=O)CNC(=O)[C@@H](N)CCCCN)c1ccc(Cl)cc1C(=O)c1ccccc1-expected956)
        • PASSED [ 66%]
      • 1 ms
        failed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1-expected957)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1-expected957])
          array([[5]]) != array([4])
          test_input = 'O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1-expected958)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1-expected958])
          array([[3]]) != array([4])
          test_input = 'Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1-expected959)
        • FAILED [ 66%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1-expected959])
          array([[3]]) != array([4])
          test_input = 'O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CCNCC1-expected960)
        • PASSED [ 66%]
      • 0 ms
        passed(O=C1NCCN1C1CCN(CCC2COc3ccccc3O2)CC1-expected961)
        • PASSED [ 66%]
      • 0 ms
        passed(c1ccc2c(c1)CCN1CCNCC21-expected962)
        • PASSED [ 67%]
      • 0 ms
        failed(c1ccc2c(c1)cc1n2CCCNC1-expected963)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[c1ccc2c(c1)cc1n2CCCNC1-expected963])
          array([[2]]) != array([1])
          test_input = 'c1ccc2c(c1)cc1n2CCCNC1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1-expected964)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1-expected964])
          array([[2]]) != array([1])
          test_input = 'CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCN1C[C@H]2C[C@H](c3ccc(F)cc3)[C@H]2C1-expected965)
        • PASSED [ 67%]
      • 1 ms
        failed(CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C-expected966)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C-expected966])
          array([[8]]) != array([5])
          test_input = 'CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)NC1=O-expected967)
        • PASSED [ 67%]
      • 1 ms
        failed(Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968])
          array([[6]]) != array([4])
          test_input = 'Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(CCCl)NCc1ccccc1-expected969)
        • PASSED [ 67%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected970)
        • PASSED [ 67%]
      • 1 ms
        failed(COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1-expected971)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1-expected971])
          array([[5]]) != array([8])
          test_input = 'COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC1(C)CC(=O)NC(=O)C1-expected972)
        • PASSED [ 67%]
      • 1 ms
        failed(C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected973)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected973])
          array([[8]]) != array([10])
          test_input = 'C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1-expected974)
        • PASSED [ 67%]
      • 0 ms
        passed(O=C1CNC(c2ccccc2)=c2c3c(sc2=N1)CCCC3-expected975)
        • PASSED [ 67%]
      • 0 ms
        passed(C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected976)
        • PASSED [ 67%]
      • 0 ms
        passed(C[N+](C)([O-])CC/C=C1/c2ccccc2C=Cc2c(Cl)cccc21-expected977)
        • PASSED [ 67%]
      • 1 ms
        failed([Cl]_c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[[Cl].c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978])
          array([[2]]) != array([1])
          test_input = '[Cl].c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCc1ccccc1-expected979)
        • PASSED [ 67%]
      • 0 ms
        passed(CN1CCc2cc(Cl)c(O)cc2[C@@H](c2cc(Br)cc3c2OCC3)C1-expected980)
        • PASSED [ 67%]
      • 1 ms
        failed(CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981])
          array([[5]]) != array([6])
          test_input = 'CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982])
          array([[6]]) != array([7])
          test_input = 'C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983])
          array([[6]]) != array([7])
          test_input = 'CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1CC2(CCCC2)CC(=O)N1CCNCC1COc2ccccc2O1-expected984)
        • PASSED [ 67%]
      • 1 ms
        failed(O=C(O)CCCCC1SCC2NC(=O)NC21-expected985)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)CCCCC1SCC2NC(=O)NC21-expected985])
          array([[3]]) != array([4])
          test_input = 'O=C(O)CCCCC1SCC2NC(=O)NC21', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1C[C@H]2SC(C3(O)CN4C(=O)C[C@H]4S3)CN12-expected986)
        • PASSED [ 67%]
      • 1 ms
        failed(O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1-expected987)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1-expected987])
          array([[3]]) != array([4])
          test_input = 'O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(C/C(=C(/CCOC(=O)c1ccccc1)SS/C(CCOC(=O)c1ccccc1)=C(\\C)N(C=O)Cc1cnc(C)nc1N)N(C=O)Cc1cnc(C)nc1N-expected988)
        • PASSED [ 67%]
      • 1 ms
        failed(CC(=O)NCCC[C@H](NC(C)=O)C(=O)O-expected989)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)NCCC[C@H](NC(C)=O)C(=O)O-expected989])
          array([[3]]) != array([4])
          test_input = 'CC(=O)NCCC[C@H](NC(C)=O)C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1-expected990)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1-expected990])
          array([[3]]) != array([4])
          test_input = 'CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC[C@]12CCN(CC3(O)CC3)[C@H](Cc3ccc(O)cc31)C2(C)C-expected991)
        • PASSED [ 67%]
      • 0 ms
        passed(CC1(C)OC(=O)Nc2ccc(Br)cc21-expected992)
        • PASSED [ 67%]
      • 0 ms
        passed(CC(C)C(Br)C(=O)NC(N)=O-expected993)
        • PASSED [ 67%]
      • 0 ms
        passed(BrC(Br)Br-expected994)
        • PASSED [ 67%]
      • 0 ms
        passed(Cc1cc(Br)cc(C(N)=O)c1O-expected995)
        • PASSED [ 67%]
      • 0 ms
        passed(O=C1CC(c2cccc(Br)c2)C(=O)N1-expected996)
        • PASSED [ 67%]
      • 1 ms
        failed(Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2-expected997)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2-expected997])
          array([[5]]) != array([4])
          test_input = 'Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1-expected998)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1-expected998])
          array([[7]]) != array([5])
          test_input = 'Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(C)(C)C)cc1-expected999)
        • PASSED [ 67%]
      • 0 ms
        passed(CCCC(=O)c1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected1000)
        • PASSED [ 67%]
      • 0 ms
        passed(CCCCC(CC)CNC(=O)CC(C)O-expected1001)
        • PASSED [ 67%]
      • 0 ms
        passed(Oc1ccc2c(c1)[C@@]13CCCC[C@@]1(O)[C@@H](C2)N(CC1CCC1)CC3-expected1002)
        • PASSED [ 67%]
      • 0 ms
        passed(C=CCN1C[C@H](C(=O)N(CCCN(C)C)C(=O)NCC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected1003)
        • PASSED [ 67%]
      • 0 ms
        failed(CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1-expected1004)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1-expected1004])
          array([[8]]) != array([5])
          test_input = 'CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O-expected1005)
        • PASSED [ 67%]
      • 0 ms
        passed(CC12CCC(CC1=O)C2(C)C-expected1006)
        • PASSED [ 67%]
      • 0 ms
        passed(CCCCC/C(=N/OCCN)c1ccc(C)c(N)c1-expected1007)
        • PASSED [ 67%]
      • 0 ms
        passed(CCCCSc1ccc(C(SCCN(C)C)c2ccccc2)cc1-expected1008)
        • PASSED [ 67%]
      • 0 ms
        passed(CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O-expected1009)
        • PASSED [ 67%]
      • 0 ms
        passed(CN1C(=O)CN(C(N)=O)C(c2ccccc2)c2cc(Cl)ccc21-expected1010)
        • PASSED [ 67%]
      • 0 ms
        passed(C#CC(OC(N)=O)c1ccccc1-expected1011)
        • PASSED [ 67%]
      • 0 ms
        failed(O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2-expected1012)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2-expected1012])
          array([[2]]) != array([3])
          test_input = 'O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC(=O)CN1Cc2ccccc2OC1=O-expected1013)
        • PASSED [ 67%]
      • 0 ms
        failed(CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014])
          array([[4]]) != array([5])
          test_input = 'CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected1015)
        • PASSED [ 67%]
      • 0 ms
        failed(NS(=O)(=O)c1ccc(C(=O)O)cc1-expected1016)
        • FAILED [ 67%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NS(=O)(=O)c1ccc(C(=O)O)cc1-expected1016])
          array([[3]]) != array([5])
          test_input = 'NS(=O)(=O)c1ccc(C(=O)O)cc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@H](N)C(=O)c1ccccc1-expected1017)
        • PASSED [ 67%]
      • 0 ms
        passed(O=C1CN(C(=O)CN2CC(c3ccc(Cl)cc3)CC2=O)CCN1-expected1018)
        • PASSED [ 67%]
      • 0 ms
        passed(OC1OC(COCCOC(O)C(Cl)(Cl)Cl)C(OC2OC(COCCOCCOC(O)C(Cl)(Cl)Cl)CC(OC(O)C(Cl)(Cl)Cl)C2O)C(OCCOCCOC(O)C(Cl)(Cl)Cl)C1O-expected1019)
        • PASSED [ 68%]
      • 1 ms
        failed(COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1-expected1020)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1-expected1020])
          array([[5]]) != array([7])
          test_input = 'COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cc(C)c(=O)[nH]n1-expected1021)
        • PASSED [ 68%]
      • 0 ms
        passed(CC(=O)c1ccc(C(O)C(CO)NC(=O)C(Cl)Cl)cc1-expected1022)
        • PASSED [ 68%]
      • 0 ms
        passed(CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N-expected1023)
        • PASSED [ 68%]
      • 0 ms
        passed(OC[C@@H](O)[C@H]1OC2O[C@H](C(Cl)(Cl)Cl)O[C@@H]2[C@H]1O-expected1024)
        • PASSED [ 68%]
      • 0 ms
        passed(CC(CC(C)(C)O)OC(O)C(Cl)(Cl)Cl-expected1025)
        • PASSED [ 68%]
      • 0 ms
        passed(CN1C(=O)CCS(=O)(=O)C1c1ccc(Cl)cc1-expected1026)
        • PASSED [ 68%]
      • 0 ms
        passed(ClC(Cl)Cl-expected1027)
        • PASSED [ 68%]
      • 0 ms
        failed(O=C(O)c1cc(=O)c2ccccc2o1-expected1028)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)c1cc(=O)c2ccccc2o1-expected1028])
          array([[3]]) != array([4])
          test_input = 'O=C(O)c1cc(=O)c2ccccc2o1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C-expected1029)
        • PASSED [ 68%]
      • 1 ms
        failed(Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21-expected1030)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21-expected1030])
          array([[5]]) != array([4])
          test_input = 'Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(C)N[C@H]1C2CCC(CC2)[C@]1(O)c1ccc(Cl)c(Cl)c1-expected1032)
        • PASSED [ 68%]
      • 0 ms
        passed(NNCC1CCCCC1-expected1033)
        • PASSED [ 68%]
      • 0 ms
        passed(CC(C)C(O)C1CCCCC1-expected1034)
        • PASSED [ 68%]
      • 0 ms
        passed(COCC1CN(c2ccc(OCc3cccc(C#N)c3)cc2)C(=O)O1-expected1035)
        • PASSED [ 68%]
      • 0 ms
        passed(COc1cc(/C=C/C(=O)N2CCCCCCC2)cc(OC)c1OC-expected1036)
        • PASSED [ 68%]
      • 1 ms
        failed(N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1037)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1037])
          array([[4]]) != array([5])
          test_input = 'N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C(=O)CNC1CC1)c1ccc(Cl)cc1C(=O)c1ccccc1Cl-expected1038)
        • PASSED [ 68%]
      • 1 ms
        failed(CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039])
          array([[7]]) != array([9])
          test_input = 'CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCC2=C(CC1)c1cc(C#N)ccc1Sc1ccccc12-expected1040)
        • PASSED [ 68%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(Cc2ccccc2)CC1-expected1041)
        • PASSED [ 68%]
      • 1 ms
        failed(Clc1cccc(Cl)c1NC1=NCCO1-expected1042)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1cccc(Cl)c1NC1=NCCO1-expected1042])
          array([[3]]) != array([2])
          test_input = 'Clc1cccc(Cl)c1NC1=NCCO1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1043)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1043])
          array([[4]]) != array([5])
          test_input = 'C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044])
          array([[5]]) != array([6])
          test_input = 'CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCN2c3ccccc3CCc3ccc(Cl)cc32)CC1-expected1045)
        • PASSED [ 68%]
      • 1 ms
        failed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO-expected1046)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO-expected1046])
          array([[4]]) != array([5])
          test_input = 'C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047])
          array([[5]]) != array([6])
          test_input = 'CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048])
          array([[5]]) != array([6])
          test_input = 'C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21-expected1049)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21-expected1049])
          array([[4]]) != array([2])
          test_input = 'CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN(CC)CCOC1(c2ccc(Cl)cc2)CCCCC1-expected1050)
        • PASSED [ 68%]
      • 1 ms
        failed(O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected1051)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected1051])
          array([[3]]) != array([7])
          test_input = 'O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1052)
        • PASSED [ 68%]
      • 1 ms
        failed(O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1-expected1053)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1-expected1053])
          array([[5]]) != array([4])
          test_input = 'O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1C(Cl)=C[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected1054)
        • PASSED [ 68%]
      • 0 ms
        passed(O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl-expected1055)
        • PASSED [ 68%]
      • 0 ms
        passed(C#CCN(C)CCCOc1ccc(Cl)cc1Cl-expected1056)
        • PASSED [ 68%]
      • 1 ms
        failed(O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected1057)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected1057])
          array([[3]]) != array([4])
          test_input = 'O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCN(C2Cc3ccccc3Sc3ccc(Cl)cc32)CC1-expected1058)
        • PASSED [ 68%]
      • 0 ms
        passed(CCc1cc2c(s1)N(C)C(=O)CN=C2c1ccccc1Cl-expected1059)
        • PASSED [ 68%]
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060])
          array([[6]]) != array([8])
          test_input = 'CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CNC(=O)CCN1CCN(CCC=C2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1061)
        • PASSED [ 68%]
      • 0 ms
        passed(CCC12CCN(CC3CCC3)C(Cc3ccc(O)cc31)C2(C)C-expected1062)
        • PASSED [ 68%]
      • 0 ms
        passed(CC[C@H]1CC(=O)[C@@H]2Oc3c(OC)ccc4c3[C@@]23CCN(CC2CC2)C(C4)[C@H]13-expected1063)
        • PASSED [ 68%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(O)C(=O)CO-expected1064)
        • PASSED [ 68%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C-expected1065)
        • PASSED [ 68%]
      • 0 ms
        passed(CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12-expected1066)
        • PASSED [ 68%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067)
        • FAILED [ 68%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067])
          array([[7]]) != array([6])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1C(=O)CCC1c1cccnc1-expected1068)
        • PASSED [ 68%]
      • 0 ms
        passed(CN(C)CC(=O)C=C1c2ccccc2CCc2ccccc21-expected1069)
        • PASSED [ 68%]
      • 0 ms
        passed(CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1-expected1070)
        • PASSED [ 68%]
      • 0 ms
        passed(C/C=C/C(=O)N(CC)C(CC)C(=O)N(C)C-expected1071)
        • PASSED [ 68%]
      • 0 ms
        passed(O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1-expected1072)
        • PASSED [ 68%]
      • 0 ms
        passed(CN(C)C1CCc2[nH]c3ccccc3c2C1-expected1073)
        • PASSED [ 68%]
      • 0 ms
        passed(CCC1(C2=CCCCC2)C(=O)NC(=O)NC1=O-expected1074)
        • PASSED [ 68%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C=Cc2ccccc21-expected1075)
        • PASSED [ 68%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@@H](O)C45CC4CC[C@]5(C)[C@H]3CC[C@]12C-expected1076)
        • PASSED [ 69%]
      • 0 ms
        passed(C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N-expected1077)
        • PASSED [ 69%]
      • 0 ms
        passed(NC(=O)C1c2ccccc2CCc2ccccc21-expected1078)
        • PASSED [ 69%]
      • 0 ms
        passed(COC12C=CC3(CC1C(C)(C)O)[C@@H]1Cc4ccc(O)c5c4[C@]3(CCN1CC1CC1)[C@@H]2O5-expected1079)
        • PASSED [ 69%]
      • 0 ms
        passed(CN(C)CCOC(=O)CCC1CCCCC1-expected1080)
        • PASSED [ 69%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CC1c1ccncc1-expected1081)
        • PASSED [ 69%]
      • 0 ms
        passed(O=C1NC(=O)C2(c3ccc(Cl)cc3)CC12-expected1082)
        • PASSED [ 69%]
      • 0 ms
        passed(CN(C)CC(=O)N1c2ccccc2Sc2ccccc21-expected1083)
        • PASSED [ 69%]
      • 0 ms
        failed(OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1-expected1084)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1-expected1084])
          array([[4]]) != array([3])
          test_input = 'OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCCCCCCCOc1c(OC)cc(C(N)=O)cc1OC-expected1085)
        • PASSED [ 69%]
      • 0 ms
        passed(Cc1ccc(Cc2ccccc2)c(N2CCNCC2)c1-expected1086)
        • PASSED [ 69%]
      • 0 ms
        passed(O=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected1087)
        • PASSED [ 69%]
      • 1 ms
        failed(CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O-expected1088)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O-expected1088])
          array([[7]]) != array([4])
          test_input = 'CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)C1(O)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1089)
        • PASSED [ 69%]
      • 0 ms
        failed(Nc1ncc2ncn(COCCO)c2n1-expected1090)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1ncc2ncn(COCCO)c2n1-expected1090])
          array([[7]]) != array([6])
          test_input = 'Nc1ncc2ncn(COCCO)c2n1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1091)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1091])
          array([[5]]) != array([6])
          test_input = 'CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@H]4C(O)CC3(C)[C@]2(C(=O)CO)O1-expected1092)
        • PASSED [ 69%]
      • 1 ms
        failed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO-expected1093)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO-expected1093])
          array([[4]]) != array([5])
          test_input = 'C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cccc(Cc2cnc[nH]2)c1C-expected1094)
        • PASSED [ 69%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(c1ccc([C@@H]2CN3CCSC3=N2)cc1-expected1096)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[c1ccc([C@@H]2CN3CCSC3=N2)cc1-expected1096])
          array([[3]]) != array([2])
          test_input = 'c1ccc([C@@H]2CN3CCSC3=N2)cc1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(c1ccc(C2CN=C3NCCN32)cc1-expected1097)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[c1ccc(C2CN=C3NCCN32)cc1-expected1097])
          array([[3]]) != array([1])
          test_input = 'c1ccc(C2CN=C3NCCN32)cc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(c1ccc(C2(c3ccccc3)OC[C@H]([C@@H]3CCCCN3)O2)cc1-expected1098)
        • PASSED [ 69%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CC[C@](O)(C(=O)CO)C3(C)CC(Cl)[C@@]12Cl-expected1099)
        • PASSED [ 69%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C-expected1100)
        • PASSED [ 69%]
      • 0 ms
        passed(CCN(CC)CCNC(=O)c1cc(Cl)cc(Cl)c1OC-expected1101)
        • PASSED [ 69%]
      • 0 ms
        passed(CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2-expected1102)
        • PASSED [ 69%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1103)
        • PASSED [ 69%]
      • 1 ms
        failed(Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1-expected1104)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1-expected1104])
          array([[3]]) != array([5])
          test_input = 'Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO-expected1105)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO-expected1105])
          array([[4]]) != array([6])
          test_input = 'C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106])
          array([[5]]) != array([7])
          test_input = 'C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCC(C)(CN2c3ccccc3Sc3ccccc32)C1-expected1107)
        • PASSED [ 69%]
      • 0 ms
        passed(CC1(C)OC(=O)NC1=O-expected1108)
        • PASSED [ 69%]
      • 0 ms
        failed(CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1109)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1109])
          array([[7]]) != array([4])
          test_input = 'CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(Cc1ccccc1)N(C)C-expected1110)
        • PASSED [ 69%]
      • 0 ms
        passed(O=C1CN2C(=O)CCC2N1-expected1111)
        • PASSED [ 69%]
      • 0 ms
        passed(CCCCCCCCCC1(C)OCC(COC(N)=O)O1-expected1112)
        • PASSED [ 69%]
      • 0 ms
        passed(CC(=O)NNC(=O)CC(O)(c1ccccc1)c1ccccc1-expected1113)
        • PASSED [ 69%]
      • 0 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1C(C)(C)O)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected1114)
        • PASSED [ 69%]
      • 1 ms
        failed(CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C-expected1115)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C-expected1115])
          array([[5]]) != array([4])
          test_input = 'CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC12NC(Cc3ccccc31)c1ccccc12-expected1116)
        • PASSED [ 69%]
      • 0 ms
        passed(CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1117)
        • PASSED [ 69%]
      • 1 ms
        failed(COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2_[Cl-]_[H+]-expected1118)
        • FAILED [ 69%]
        • [14:08:23] WARNING: not removing hydrogen atom without neighbors
          [14:08:23] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2.[Cl-].[H+]-expected1118])
          array([[4]]) != array([5])
          test_input = 'COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2.[Cl-].[H+]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(NCCc1ccc(O)c(O)c1)C12CC3CC(CC(C3)C1)C2-expected1119)
        • PASSED [ 69%]
      • 0 ms
        passed(CCN1CC(CCN2CCOCC2)C(c2ccccc2)(c2ccccc2)C1=O-expected1120)
        • PASSED [ 69%]
      • 0 ms
        passed(COc1ccc2c(c1OC)[C@]13CCN(C)[C@H](C2)[C@]1(O)CC[C@@H](O)C3-expected1121)
        • PASSED [ 69%]
      • 0 ms
        passed(CNCCC(Oc1cccc2ccccc12)c1cccs1-expected1122)
        • PASSED [ 69%]
      • 1 ms
        failed(O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1123)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1123])
          array([[4]]) != array([8])
          test_input = 'O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(CN1CCCC1=O)NNC(=O)CN1CCCC1=O-expected1124)
        • PASSED [ 69%]
      • 0 ms
        passed(CCC(=O)N(c1ccc(Cl)c(Cl)c1)[C@@H]1CCC[C@H]1N(C)C-expected1125)
        • PASSED [ 69%]
      • 0 ms
        passed(CC1=NN(c2ccccc2)C(=O)C1-expected1126)
        • PASSED [ 69%]
      • 0 ms
        failed(Cc1nccn1C(C)c1ccccc1-expected1127)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1nccn1C(C)c1ccccc1-expected1127])
          array([[2]]) != array([1])
          test_input = 'Cc1nccn1C(C)c1ccccc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN(CC)C/C=C1/c2ccccc2Nc2cc(Cl)ccc21-expected1128)
        • PASSED [ 69%]
      • 1 ms
        failed(CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected1129)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected1129])
          array([[4]]) != array([5])
          test_input = 'CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1-expected1130)
        • FAILED [ 69%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1-expected1130])
          array([[3]]) != array([4])
          test_input = 'Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(c1cc2c(c(N3CCNCC3)c1)OCCO2-expected1131)
        • PASSED [ 69%]
      • 0 ms
        passed(CCC(CC)(CNC(=O)CCCO)c1cccc(OC)c1-expected1132)
        • PASSED [ 70%]
      • 0 ms
        passed(COc1ccccc1N1CCN(CC(O)COc2cc(OC)c(OC)c(OC)c2)CC1-expected1133)
        • PASSED [ 70%]
      • 0 ms
        passed(CCOC(=O)N(Cc1ccccc1)C1CC1-expected1134)
        • PASSED [ 70%]
      • 0 ms
        passed(OC1CCN(c2ccc(-c3ccc(Cl)cc3Cl)nn2)CC1-expected1135)
        • PASSED [ 70%]
      • 0 ms
        passed(CCN(CC)C(=O)[C@H]1[C@H](C(=O)N(CC)CC)[C@H]2C=C[C@@H]1C2-expected1136)
        • PASSED [ 70%]
      • 0 ms
        passed(CC(=O)C1CCC2C3CC(C)C4=CC(=O)C=CC4(C)C3C(O)CC12C-expected1137)
        • PASSED [ 70%]
      • 0 ms
        passed(CC1OC2(CCCCC2Oc2cccc(Cl)c2)NC1=O-expected1138)
        • PASSED [ 70%]
      • 0 ms
        passed(CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected1139)
        • PASSED [ 70%]
      • 0 ms
        passed(CN1CCC2=C(CC1)c1ccccc1N(C)c1ccccc12-expected1140)
        • PASSED [ 70%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(C(C)=O)ccc1OC-expected1141)
        • PASSED [ 70%]
      • 1 ms
        failed(CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1142)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1142])
          array([[7]]) != array([4])
          test_input = 'CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1-expected1143)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1-expected1143])
          array([[3]]) != array([2])
          test_input = 'CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOC1c2ccccc2C(=O)N(C)c2ccccc21-expected1144)
        • PASSED [ 70%]
      • 0 ms
        passed(CCCl-expected1145)
        • PASSED [ 70%]
      • 0 ms
        passed(C=C-expected1146)
        • PASSED [ 70%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC=C(C)C1=O-expected1147)
        • PASSED [ 70%]
      • 0 ms
        passed(CCNC1(c2ccccc2)CCCCC1-expected1148)
        • PASSED [ 70%]
      • 0 ms
        passed(CCC(C(N)=O)N1CCCC1=O-expected1149)
        • PASSED [ 70%]
      • 1 ms
        failed(CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1150)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1150])
          array([[3]]) != array([5])
          test_input = 'CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(O)/C=C/C(=O)O_OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected1151)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(O)/C=C/C(=O)O.OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected1151])
          array([[7]]) != array([9])
          test_input = 'O=C(O)/C=C/C(=O)O.OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC-expected1152)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC-expected1152])
          array([[6]]) != array([4])
          test_input = 'CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(O)ccc5c4C12CCN(C)C3C5-expected1153)
        • PASSED [ 70%]
      • 0 ms
        passed(CCC1(c2ccccc2)OCC(C2CCCCN2)O1-expected1154)
        • PASSED [ 70%]
      • 1 ms
        failed(CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155])
          array([[9]]) != array([8])
          test_input = 'CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O', expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN(C)CCCn1c(=O)c2ccccc2c2ccccc21-expected1156)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C)CCCn1c(=O)c2ccccc2c2ccccc21-expected1156])
          array([[3]]) != array([2])
          test_input = 'CN(C)CCCn1c(=O)c2ccccc2c2ccccc21', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C-expected1157)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C-expected1157])
          array([[7]]) != array([6])
          test_input = 'CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C1CC[C@H](C(=O)N2CCCCC2)N1-expected1158)
        • PASSED [ 70%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1159)
        • PASSED [ 70%]
      • 0 ms
        passed(NC(=O)OCC(COC(N)=O)c1ccccc1-expected1160)
        • PASSED [ 70%]
      • 0 ms
        passed(COc1ccc(OCC2CN(C)CCC2c2ccccc2)cc1-expected1161)
        • PASSED [ 70%]
      • 1 ms
        failed(O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162])
          array([[4]]) != array([5])
          test_input = 'O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1-expected1163)
        • PASSED [ 70%]
      • 0 ms
        passed(CCNC1C2CCC(C2)C1c1ccccc1-expected1164)
        • PASSED [ 70%]
      • 0 ms
        passed(CCCCN/C(=C1/C=C(Cl)C=CC1=O)c1ccccc1Cl-expected1165)
        • PASSED [ 70%]
      • 0 ms
        passed(c1ccc(CC2NCCc3c2[nH]c2ccccc32)cc1-expected1166)
        • PASSED [ 70%]
      • 0 ms
        passed(CCC1C(=O)NC(=O)C1(C)c1ccccc1-expected1167)
        • PASSED [ 70%]
      • 0 ms
        failed(Clc1ccc(OCC2=NCCN2)cc1Cl-expected1168)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccc(OCC2=NCCN2)cc1Cl-expected1168])
          array([[3]]) != array([2])
          test_input = 'Clc1ccc(OCC2=NCCN2)cc1Cl', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC1NC(=O)COC1c1ccccc1-expected1169)
        • PASSED [ 70%]
      • 1 ms
        failed(CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1-expected1170)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1-expected1170])
          array([[3]]) != array([2])
          test_input = 'CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCNC1=NC(=O)C(c2ccccc2)O1-expected1171)
        • PASSED [ 70%]
      • 0 ms
        passed(CC(C)(O)CC(C)(O)c1ccc(Cl)cc1-expected1172)
        • PASSED [ 70%]
      • 5 ms
        failed(Cn1nc(-c2cccnc2)nc1-c1ccccc1CO-expected1173)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cn1nc(-c2cccnc2)nc1-c1ccccc1CO-expected1173])
          array([[5]]) != array([4])
          test_input = 'Cn1nc(-c2cccnc2)nc1-c1ccccc1CO', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)N1CCN(Cc2ccc3c(c2)OCO3)CC1-expected1174)
        • PASSED [ 70%]
      • 1 ms
        failed(CC(C)(C)NCC(O)c1ccccc1F-expected1175)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(C)NCC(O)c1ccccc1F-expected1175])
          array([[2]]) != array([3])
          test_input = 'CC(C)(C)NCC(O)c1ccccc1F', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1-expected1176)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1-expected1176])
          array([[4]]) != array([5])
          test_input = 'CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1177)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1177])
          array([[3]]) != array([6])
          test_input = 'CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178])
          array([[7]]) != array([8])
          test_input = 'CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179])
          array([[3]]) != array([6])
          test_input = 'CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1-expected1180)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1-expected1180])
          array([[5]]) != array([7])
          test_input = 'COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1-expected1181)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1-expected1181])
          array([[5]]) != array([6])
          test_input = 'CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected1182)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected1182])
          array([[5]]) != array([6])
          test_input = 'C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cc2c(s1)=Nc1ccc(F)cc1NC=2N1CCN(C)CC1-expected1184)
        • PASSED [ 70%]
      • 1 ms
        failed(COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1185)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1185])
          array([[7]]) != array([9])
          test_input = 'COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186])
          array([[7]]) != array([9])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187])
          array([[5]]) != array([6])
          test_input = 'CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188)
        • FAILED [ 70%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188])
          array([[5]]) != array([6])
          test_input = 'CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCS(=O)(=O)c1ccc(F)cc1-expected1189)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCS(=O)(=O)c1ccc(F)cc1-expected1189])
          array([[2]]) != array([3])
          test_input = 'CCS(=O)(=O)c1ccc(F)cc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190])
          array([[5]]) != array([6])
          test_input = 'CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21-expected1191)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21-expected1191])
          array([[1]]) != array([4])
          test_input = 'C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1-expected1192)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1-expected1192])
          array([[2]]) != array([5])
          test_input = 'CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193])
          array([[6]]) != array([9])
          test_input = 'CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1194)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1194])
          array([[5]]) != array([8])
          test_input = 'OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1-expected1195)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1-expected1195])
          array([[3]]) != array([6])
          test_input = 'NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1', expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2-expected1196)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2-expected1196])
          array([[3]]) != array([5])
          test_input = 'O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO-expected1197)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO-expected1197])
          array([[4]]) != array([5])
          test_input = 'O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1198)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1198])
          array([[3]]) != array([4])
          test_input = 'CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199])
          array([[5]]) != array([8])
          test_input = 'CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200])
          array([[6]]) != array([9])
          test_input = 'CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1-expected1201)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1-expected1201])
          array([[6]]) != array([9])
          test_input = 'OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCOC(=O)c1cncn1C(C)c1ccc(F)cc1-expected1202)
        • PASSED [ 71%]
      • 1 ms
        failed(OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1-expected1203)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1-expected1203])
          array([[3]]) != array([5])
          test_input = 'OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21-expected1204)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21-expected1204])
          array([[4]]) != array([5])
          test_input = 'CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1_O=C(O)/C=C\\C(=O)O-expected1205)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1.O=C(O)/C=C\\C(=O)O-expected1205])
          array([[6]]) != array([11])
          test_input = 'COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1.O=C(O)/C=C\\C(=O)O'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1-expected1206)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1-expected1206])
          array([[2]]) != array([5])
          test_input = 'CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1-expected1207)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1-expected1207])
          array([[9]]) != array([10])
          test_input = 'Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1'
          expected = array([10.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([10])
          E Full diff:
          E - array([10])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208])
          array([[8]]) != array([9])
          test_input = 'CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[8]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[8]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CP(C)(=O)CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected1209)
        • PASSED [ 71%]
      • 0 ms
        passed(NNC(=O)CP(=O)(c1ccccc1)c1ccccc1-expected1210)
        • PASSED [ 71%]
      • 0 ms
        failed(C[C@@H]1O[C@@H]1P(=O)(O)O-expected1211)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1O[C@@H]1P(=O)(O)O-expected1211])
          array([[2]]) != array([4])
          test_input = 'C[C@@H]1O[C@@H]1P(=O)(O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O-expected1212)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O-expected1212])
          array([[4]]) != array([6])
          test_input = 'O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1213)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1213])
          array([[4]]) != array([7])
          test_input = 'CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1214)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1214])
          array([[5]]) != array([8])
          test_input = 'O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(O=C1OCCC1C1(O)CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1215)
        • PASSED [ 71%]
      • 0 ms
        passed(C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N-expected1216)
        • PASSED [ 71%]
      • 1 ms
        passed(O=c1[nH]oc2c1CCNC2-expected1217)
        • PASSED [ 71%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@](C)(O)CC[C@]4(C)[C@H]3CC[C@]12C-expected1218)
        • PASSED [ 71%]
      • 1 ms
        passed(COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12-expected1219)
        • PASSED [ 71%]
      • 0 ms
        passed(CCC12CCN(CC3CC3)C(Cc3ccc(O)cc31)C2(C)C-expected1220)
        • PASSED [ 71%]
      • 1 ms
        failed(CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1_[Cl-]_[H+]-expected1221)
        • FAILED [ 71%]
        • [14:08:24] WARNING: not removing hydrogen atom without neighbors
          [14:08:24] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1.[Cl-].[H+]-expected1221])
          array([[6]]) != array([7])
          test_input = 'CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1.[Cl-].[H+]'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3-expected1222)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3-expected1222])
          array([[2]]) != array([3])
          test_input = 'Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1cc2c(cc1OC)C(c1cccc(Cl)c1)=NN=C(C)C2-expected1223)
        • PASSED [ 71%]
      • 1 ms
        failed(CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1-expected1224)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1-expected1224])
          array([[5]]) != array([6])
          test_input = 'CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO-expected1225)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO-expected1225])
          array([[3]]) != array([5])
          test_input = 'C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(NCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1)c1ccc(F)cc1-expected1226)
        • PASSED [ 71%]
      • 1 ms
        failed(CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227])
          array([[4]]) != array([5])
          test_input = 'CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F-expected1228)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F-expected1228])
          array([[5]]) != array([7])
          test_input = 'C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1-expected1229)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1-expected1229])
          array([[3]]) != array([4])
          test_input = 'O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCCC(N)C(O)(c1ccccc1)c1ccccc1-expected1230)
        • PASSED [ 71%]
      • 0 ms
        passed(OCCN1C=CN(CCCN2c3ccccc3C=Cc3ccccc32)C=CC1-expected1231)
        • PASSED [ 71%]
      • 1 ms
        passed(CCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(OC)ccc5c4C12CCN(CC1CC1)C3C5-expected1232)
        • PASSED [ 71%]
      • 1 ms
        failed(CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O-expected1233)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O-expected1233])
          array([[4]]) != array([5])
          test_input = 'CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1234)
        • PASSED [ 71%]
      • 1 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1235)
        • PASSED [ 71%]
      • 1 ms
        failed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O_O-expected1236)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O-expected1236])
          array([[7]]) != array([9])
          test_input = 'C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C-expected1237)
        • PASSED [ 71%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1-expected1238)
        • PASSED [ 71%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)CC[C@@]3(O)[C@H]1C5-expected1239)
        • PASSED [ 71%]
      • 1 ms
        failed(COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1-expected1240)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1-expected1240])
          array([[4]]) != array([3])
          test_input = 'COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCC(Br)(C(N)=O)C(C)C-expected1241)
        • PASSED [ 71%]
      • 1 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CCOCC1CC1-expected1242)
        • PASSED [ 71%]
      • 0 ms
        passed(Cc1cccc(O[C@H]2CCNC[C@H]2O)c1C-expected1243)
        • PASSED [ 71%]
      • 1 ms
        passed(O=C(/C=C/c1ccc2c(c1)OCO2)N1CCCCC1-expected1244)
        • PASSED [ 71%]
      • 4 ms
        failed(COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1-expected1245)
        • FAILED [ 71%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1-expected1245])
          array([[6]]) != array([7])
          test_input = 'COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(CN1CCN(CCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)C1=O-expected1246)
        • PASSED [ 72%]
      • 0 ms
        passed(CN(C)CCN1CCN(c2cccc(Cl)c2)C1=O-expected1247)
        • PASSED [ 72%]
      • 0 ms
        passed(C[N+](C)([O-])CCCN1c2ccccc2CCc2ccccc21-expected1248)
        • PASSED [ 72%]
      • 0 ms
        passed(C1=Cc2cccc(OCC3CNCCO3)c2C1-expected1249)
        • PASSED [ 72%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected1250)
        • PASSED [ 72%]
      • 0 ms
        passed(CN(C)CCC1(c2ccccc2)C=Cc2ccccc21-expected1251)
        • PASSED [ 72%]
      • 0 ms
        passed(CC(C)NNC(=O)COc1ccc(Cl)cc1-expected1252)
        • PASSED [ 72%]
      • 0 ms
        passed(CSc1c(Cl)nc(NC(C)C)nc1N1CCN(C)CC1-expected1253)
        • PASSED [ 72%]
      • 0 ms
        passed(Cc1cc(C(=O)NNCc2ccccc2)no1-expected1254)
        • PASSED [ 72%]
      • 1 ms
        failed(CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F-expected1255)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F-expected1255])
          array([[5]]) != array([6])
          test_input = 'CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257])
          array([[9]]) != array([11])
          test_input = 'CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1'
          expected = array([11.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[9]]) == array([11])
          E Full diff:
          E - array([11])
          E ? ^^
          E + array([[9]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C=C[C@@H]1CNCC[C@H]1CCCc1ccnc2ccc(OC)cc12-expected1258)
        • PASSED [ 72%]
      • 0 ms
        passed(CC1[C@H]2C(=O)c3ccc(O)cc3[C@]1(C)CCN2CC1CC1-expected1259)
        • PASSED [ 72%]
      • 0 ms
        passed(CC1=CC(=O)N2CC(=O)N(C)c3ccc(Cl)cc3C2(c2ccccc2)O1-expected1260)
        • PASSED [ 72%]
      • 0 ms
        passed(CCC(=O)C1(c2cccc(O)c2)CCN(C)CC1-expected1261)
        • PASSED [ 72%]
      • 0 ms
        failed(Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1-expected1262)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1-expected1262])
          array([[6]]) != array([5])
          test_input = 'Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(O=C(CN1CCC23CCCCC2C1Cc1ccc(O)cc13)c1ccccc1-expected1263)
        • PASSED [ 72%]
      • 0 ms
        passed(O=C1N(c2ccccc2)c2ccccc2C1(Cc1ccncc1)Cc1ccncc1-expected1264)
        • PASSED [ 72%]
      • 0 ms
        passed(CCN(CC)C(=O)N[C@H]1C=C2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1265)
        • PASSED [ 72%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1266)
        • PASSED [ 72%]
      • 0 ms
        passed(O=C1CCNc2ccc(Cl)cc2N1c1ccccc1-expected1267)
        • PASSED [ 72%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C-expected1268)
        • PASSED [ 72%]
      • 1 ms
        failed(CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1_[Cl-]_[H+]-expected1269)
        • FAILED [ 72%]
        • [14:08:24] WARNING: not removing hydrogen atom without neighbors
          [14:08:24] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1.[Cl-].[H+]-expected1269])
          array([[3]]) != array([4])
          test_input = 'CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1.[Cl-].[H+]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc(Cl)c2c1CCCC2N(C)C-expected1270)
        • PASSED [ 72%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)nc2C(c2ccccc2Cl)=NC1O-expected1271)
        • PASSED [ 72%]
      • 1 ms
        passed(CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1-expected1272)
        • PASSED [ 72%]
      • 1 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2Cl)c2cc(Cl)ccc21-expected1273)
        • PASSED [ 72%]
      • 1 ms
        failed(FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1-expected1274)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1-expected1274])
          array([[5]]) != array([7])
          test_input = 'FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CC[C@]23NC(=O)CC(c4cc(Cl)ccc4O2)C3C1-expected1275)
        • PASSED [ 72%]
      • 1 ms
        failed(CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl_O-expected1276)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl.O-expected1276])
          array([[4]]) != array([5])
          test_input = 'CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl.O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COC1=CC(=O)OC1C(O)c1ccccc1Cl-expected1277)
        • PASSED [ 72%]
      • 1 ms
        passed(CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1278)
        • PASSED [ 72%]
      • 1 ms
        failed(CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279])
          array([[4]]) != array([3])
          test_input = 'CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1-expected1280)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1-expected1280])
          array([[4]]) != array([5])
          test_input = 'CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21-expected1281)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21-expected1281])
          array([[3]]) != array([2])
          test_input = 'OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN1CCN(CC(=O)[C@@]2(O)CC[C@H]3[C@@H]4CCC5=CC(=O)C=C[C@]5(C)[C@H]4[C@@H](O)C[C@@]32C)CC1-expected1282)
        • PASSED [ 72%]
      • 0 ms
        passed(CC(NN)c1ccccc1-expected1283)
        • PASSED [ 72%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(N)=O-expected1284)
        • PASSED [ 72%]
      • 0 ms
        passed(C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O-expected1285)
        • PASSED [ 72%]
      • 0 ms
        passed(CNC(=O)NC(O)C(Cl)(Cl)Cl-expected1286)
        • PASSED [ 72%]
      • 0 ms
        passed(C[C@@H]1CC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC2(C)[C@@]1(O)C(=O)CO-expected1287)
        • PASSED [ 72%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@]12C-expected1288)
        • PASSED [ 72%]
      • 1 ms
        failed(CCN(CC)CCNC(=O)COc1ccc(OC)cc1_[Cl-]_[H+]-expected1289)
        • FAILED [ 72%]
        • [14:08:24] WARNING: not removing hydrogen atom without neighbors
          [14:08:24] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CCN(CC)CCNC(=O)COc1ccc(OC)cc1.[Cl-].[H+]-expected1289])
          array([[4]]) != array([5])
          test_input = 'CCN(CC)CCNC(=O)COc1ccc(OC)cc1.[Cl-].[H+]', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1290)
        • PASSED [ 72%]
      • 0 ms
        failed(CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1291)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1291])
          array([[2]]) != array([3])
          test_input = 'CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC12CC3CC(C)(C1)CC(N)(C3)C2-expected1292)
        • PASSED [ 72%]
      • 0 ms
        passed(COc1ccccc1OCC1CNC(=O)O1-expected1293)
        • PASSED [ 72%]
      • 0 ms
        passed(COc1ccc2c(c1)C(O)(CCCN(C)C)c1ccccc1S2-expected1294)
        • PASSED [ 72%]
      • 1 ms
        failed(CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21-expected1295)
        • FAILED [ 72%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21-expected1295])
          array([[4]]) != array([5])
          test_input = 'CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(=O)Nc1cccc(O)c1-expected1296)
        • PASSED [ 72%]
      • 0 ms
        passed(CC(C)(O)C(C)(O)c1cccc(Cl)c1-expected1297)
        • PASSED [ 72%]
      • 0 ms
        passed(CN(C)CCN(Cc1cccs1)c1ccccn1-expected1298)
        • PASSED [ 72%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(C)C1=O-expected1299)
        • PASSED [ 72%]
      • 0 ms
        passed(CCCC(C)C1(CCSC)C(=O)NC(=S)NC1=O-expected1300)
        • PASSED [ 72%]
      • 0 ms
        passed(CC1=CCC2C3Cc4ccc(O)c5c4C2(CCN3C)C1O5-expected1301)
        • PASSED [ 72%]
      • 0 ms
        passed(CO[C@H]1CC[C@H]2[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1302)
        • PASSED [ 73%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1303)
        • PASSED [ 73%]
      • 1 ms
        failed(Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304])
          array([[4]]) != array([3])
          test_input = 'Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC-expected1305)
        • PASSED [ 73%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc2c(c1)N(CCCN1CCC(C(N)=O)CC1)c1ccccc1S2-expected1306)
        • PASSED [ 73%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@@]2(C)C(=O)CC[C@H]3[C@H]1C5-expected1307)
        • PASSED [ 73%]
      • 1 ms
        passed(COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC-expected1308)
        • PASSED [ 73%]
      • 0 ms
        passed(COc1ccc2c(c1)C(N1CCN(C)CC1)=Cc1ccccc1O2-expected1309)
        • PASSED [ 73%]
      • 1 ms
        failed(COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1-expected1310)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1-expected1310])
          array([[4]]) != array([2])
          test_input = 'COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21-expected1311)
        • PASSED [ 73%]
      • 0 ms
        passed(CC1COC2(c3ccccc3Cl)c3cc(Cl)ccc3NC(=O)CN12-expected1312)
        • PASSED [ 73%]
      • 0 ms
        passed(CNc1nc(Cl)c(SC)c(N2CCN(C)CC2)n1-expected1313)
        • PASSED [ 73%]
      • 1 ms
        failed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected1314)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected1314])
          array([[3]]) != array([2])
          test_input = 'Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F-expected1315)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F-expected1315])
          array([[3]]) != array([14])
          test_input = 'NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F'
          expected = array([14.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([14])
          E Full diff:
          E - array([14])
          E ? ^^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCCNCC(N)=O-expected1316)
        • PASSED [ 73%]
      • 0 ms
        passed(CO/N=C/C1=CCCN(C)C1-expected1317)
        • PASSED [ 73%]
      • 0 ms
        passed(Cc1cc(-c2ccccc2)nnc1NCCN1CCOCC1-expected1318)
        • PASSED [ 73%]
      • 0 ms
        passed(CCO[C@H]1C[C@@]2(C)[C@@H](CC[C@@H]3[C@@H]2[C@H](N(C)C)C[C@]2(C)[C@@H](C(C)=O)CC[C@@H]32)C[C@@H]1O-expected1319)
        • PASSED [ 73%]
      • 0 ms
        passed(CN1[C@@H]2CC[C@H]1CC(NC(=O)c1cn(C3CCCCC3)c3ccccc3c1=O)C2-expected1320)
        • PASSED [ 73%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected1321)
        • PASSED [ 73%]
      • 1 ms
        failed(NC(=O)CS(=O)C(c1ccccc1)c1ccccc1-expected1322)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(=O)CS(=O)C(c1ccccc1)c1ccccc1-expected1322])
          array([[2]]) != array([3])
          test_input = 'NC(=O)CS(=O)C(c1ccccc1)c1ccccc1', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1323)
        • PASSED [ 73%]
      • 0 ms
        passed(CNCCCN1c2ccccc2C(C)(C)c2ccccc21-expected1324)
        • PASSED [ 73%]
      • 0 ms
        passed(CC1(c2ccccc2)CC(=O)N(CN2CCOCC2)C1=O-expected1325)
        • PASSED [ 73%]
      • 0 ms
        passed(O=C1NC2CCCCN2C12CCN(CCCN1c3ccccc3CCc3ccc(Cl)cc31)CC2-expected1326)
        • PASSED [ 73%]
      • 0 ms
        passed(COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1327)
        • PASSED [ 73%]
      • 0 ms
        passed(CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1-expected1328)
        • PASSED [ 73%]
      • 0 ms
        passed(CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1-expected1329)
        • PASSED [ 73%]
      • 0 ms
        passed(CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1330)
        • PASSED [ 73%]
      • 0 ms
        passed(CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1-expected1331)
        • PASSED [ 73%]
      • 0 ms
        passed(CCCCCCC(C)(C)c1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(=O)C[C@@H]21-expected1332)
        • PASSED [ 73%]
      • 0 ms
        failed(O=C(Cn1ccnc1)c1ccc2ccccc2c1-expected1333)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(Cn1ccnc1)c1ccc2ccccc2c1-expected1333])
          array([[3]]) != array([2])
          test_input = 'O=C(Cn1ccnc1)c1ccc2ccccc2c1', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        failed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F_O-expected1334)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F.O-expected1334])
          array([[4]]) != array([6])
          test_input = 'C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F.O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)CCC4(O)C(C2)N(CC2CCC2)CCC314-expected1335)
        • PASSED [ 73%]
      • 0 ms
        passed(C=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected1336)
        • PASSED [ 73%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected1337)
        • PASSED [ 73%]
      • 0 ms
        failed(CN=C(Cc1ccc2ccccc2c1)[NH2+]C_[Cl-]-expected1338)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN=C(Cc1ccc2ccccc2c1)[NH2+]C.[Cl-]-expected1338])
          array([[1]]) != array([2])
          test_input = 'CN=C(Cc1ccc2ccccc2c1)[NH2+]C.[Cl-]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C1=C(CC2=NCNC2)CCc2ccccc21-expected1339)
        • PASSED [ 73%]
      • 0 ms
        passed(CC(Oc1cccc2ccccc12)/C(N)=N/O-expected1340)
        • PASSED [ 73%]
      • 1 ms
        failed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1_[Cl-]_[H+]-expected1341)
        • FAILED [ 73%]
        • [14:08:25] WARNING: not removing hydrogen atom without neighbors
          [14:08:25] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:45 (test_num_hacceptor_featurizer[CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1.[Cl-].[H+]-expected1341])
          array([[7]]) != array([6])
          test_input = 'CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1.[Cl-].[H+]'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)CN1CCCC1=O-expected1342)
        • PASSED [ 73%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCc2noc3cc(F)ccc23)CC1-expected1343)
        • PASSED [ 73%]
      • 0 ms
        passed(O=C(CCNNC(=O)c1ccncc1)NCc1ccccc1-expected1344)
        • PASSED [ 73%]
      • 1 ms
        failed(CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1-expected1345)
        • FAILED [ 73%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1-expected1345])
          array([[4]]) != array([5])
          test_input = 'CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C-expected1346)
        • PASSED [ 73%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5-expected1347)
        • PASSED [ 73%]
      • 0 ms
        passed(O=C(c1cccnc1)N1CCOCC1-expected1348)
        • PASSED [ 73%]
      • 0 ms
        passed(NC(=O)c1cccnc1-expected1349)
        • PASSED [ 73%]
      • 0 ms
        passed(CCN(CC)C(=O)c1cccnc1-expected1350)
        • PASSED [ 73%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1351)
        • PASSED [ 73%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C-expected1352)
        • PASSED [ 73%]
      • 0 ms
        passed(CNCCC(Oc1ccccc1OC)c1ccccc1-expected1353)
        • PASSED [ 73%]
      • 0 ms
        passed(N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1-expected1354)
        • PASSED [ 73%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C-expected1355)
        • PASSED [ 73%]
      • 0 ms
        passed(CNC/C=C(/c1ccc(Br)cc1)c1cccnc1-expected1356)
        • PASSED [ 73%]
      • 0 ms
        passed(CN1Cc2c(N)cccc2C(c2ccccc2)C1-expected1357)
        • PASSED [ 73%]
      • 0 ms
        passed(CCCCCCCCCNc1ncnc2[nH]ccc12-expected1358)
        • PASSED [ 73%]
      • 0 ms
        failed(FCC(F)(F)F-expected1359)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[FCC(F)(F)F-expected1359])
          array([[0]]) != array([4])
          test_input = 'FCC(F)(F)F', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(Oc1ccc2c(c1)C13CCCCC1C(C2)NCC3-expected1360)
        • PASSED [ 74%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)C=CC4C(C2)NCCC341-expected1361)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C1CN=C(C2=CCCCC2)c2cc(Cl)ccc2N1-expected1362)
        • PASSED [ 74%]
      • 0 ms
        passed(COc1ccc2c(c1OC)C(=O)O[C@@H]2[C@H]1c2c(cc3c(c2OC)OCO3)CCN1C-expected1363)
        • PASSED [ 74%]
      • 0 ms
        passed(CN(C)CCON=C1c2ccccc2CCc2ccccc21-expected1364)
        • PASSED [ 74%]
      • 0 ms
        passed(Clc1ccc2c(c1)/C(=C/C1CN3CCC1CC3)c1ccccc1S2-expected1365)
        • PASSED [ 74%]
      • 0 ms
        passed(Cc1nc2c(C)cccn2c(=O)c1CCN1CCC(c2noc3cc(F)ccc23)CC1-expected1366)
        • PASSED [ 74%]
      • 1 ms
        failed(O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12-expected1367)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12-expected1367])
          array([[6]]) != array([5])
          test_input = 'O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCCCCCC(C)NN-expected1368)
        • PASSED [ 74%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C2CC2c2ccccc21-expected1369)
        • PASSED [ 74%]
      • 1 ms
        failed(O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1-expected1370)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1-expected1370])
          array([[5]]) != array([7])
          test_input = 'O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[5]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[5]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        failed(CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1-expected1371)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1-expected1371])
          array([[2]]) != array([5])
          test_input = 'CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1', expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(NC(=O)N1c2ccccc2CC(=O)c2ccccc21-expected1372)
        • PASSED [ 74%]
      • 0 ms
        passed(CC(Cc1ccccc1)[N+](C)([O-])Cc1ccccc1-expected1373)
        • PASSED [ 74%]
      • 0 ms
        passed(NC(=O)CN1CC(O)CC1=O-expected1374)
        • PASSED [ 74%]
      • 0 ms
        passed(COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C-expected1375)
        • PASSED [ 74%]
      • 1 ms
        failed(NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O-expected1376)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O-expected1376])
          array([[3]]) != array([4])
          test_input = 'NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CN(C)C(=O)COC1c2ccccc2CCc2ccccc21-expected1377)
        • PASSED [ 74%]
      • 0 ms
        passed(CC(C)CCC(=O)CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1-expected1378)
        • PASSED [ 74%]
      • 1 ms
        failed(CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21-expected1379)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21-expected1379])
          array([[7]]) != array([5])
          test_input = 'CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(COc1ccc(N2C[C@H](CN3CCC(O)(c4ccc5c(c4)OCO5)CC3)OC2=O)cc1-expected1380)
        • PASSED [ 74%]
      • 0 ms
        passed(Nc1cc(OCC2CC2)c(C(=O)NC2CN3CCC2CC3)cc1Cl-expected1381)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C(NC(=O)c1ccccc1)NC1CCN(Cc2ccc3ccccc3c2)CC1-expected1382)
        • PASSED [ 74%]
      • 0 ms
        passed(CC1OC(C)OC(C)O1-expected1383)
        • PASSED [ 74%]
      • 1 ms
        failed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384])
          array([[6]]) != array([7])
          test_input = 'CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(C#CCN(C)Cc1ccccc1-expected1385)
        • PASSED [ 74%]
      • 1 ms
        failed(Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1-expected1386)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1-expected1386])
          array([[4]]) != array([5])
          test_input = 'Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 1 ms
        passed(O=C(CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1)N1CCC2(CC1)OCCO2-expected1387)
        • PASSED [ 74%]
      • 1 ms
        failed(OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected1388)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected1388])
          array([[2]]) != array([7])
          test_input = 'OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CC(OC(N)=O)C(C)C(C)OC(N)=O-expected1389)
        • PASSED [ 74%]
      • 0 ms
        passed(CCCCCN[C@@]12C=CC(=O)[C@@H]3Oc4c(O)ccc5c4[C@@]31CCN(C)[C@@H]2C5-expected1390)
        • PASSED [ 74%]
      • 0 ms
        passed(OCC1(CO)COC(C(Cl)(Cl)Cl)OC1-expected1391)
        • PASSED [ 74%]
      • 1 ms
        failed(CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392])
          array([[6]]) != array([4])
          test_input = 'CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1', expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(c1ccc(-c2nc(N3CCNCC3)cc3ccccc23)cc1-expected1393)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C1[C@H]2CCCC[C@H]2C(=O)N1CCCCN1CCN(c2nsc3ccccc23)CC1-expected1394)
        • PASSED [ 74%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1395)
        • PASSED [ 74%]
      • 0 ms
        passed(OC(OCC(COC(O)C(Cl)(Cl)Cl)(COC(O)C(Cl)(Cl)Cl)COC(O)C(Cl)(Cl)Cl)C(Cl)(Cl)Cl-expected1396)
        • PASSED [ 74%]
      • 0 ms
        passed(NC(=O)NC(=O)Cc1ccccc1-expected1397)
        • PASSED [ 74%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1-expected1398)
        • PASSED [ 74%]
      • 0 ms
        passed(CCC(C(=O)NC(N)=O)c1ccccc1-expected1399)
        • PASSED [ 74%]
      • 0 ms
        passed(CC1NCCOC1c1ccccc1-expected1400)
        • PASSED [ 74%]
      • 0 ms
        passed(CC(COc1ccccc1)NN-expected1401)
        • PASSED [ 74%]
      • 0 ms
        passed(CN1C(=O)CC(c2ccccc2)C1=O-expected1402)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C([O-])c1ccccc1Oc1ccccc1-expected1403)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected1404)
        • PASSED [ 74%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(c2ccccc2)C1=O-expected1405)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C(c1ccccn1)N1CCN(Cc2ccccc2)CC1-expected1406)
        • PASSED [ 74%]
      • 0 ms
        passed(CCC[C@]1(c2cccc(O)c2)CCN(C)C[C@@H]1C-expected1407)
        • PASSED [ 74%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1-expected1408)
        • PASSED [ 74%]
      • 0 ms
        passed(c1ccc(-c2cc(CCC3CCNCC3)c3ccccc3n2)cc1-expected1409)
        • PASSED [ 74%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCC(CCO)CC1)c1ccccc1S2-expected1410)
        • PASSED [ 74%]
      • 0 ms
        passed(O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1-expected1411)
        • PASSED [ 74%]
      • 0 ms
        passed(CN1CCN(c2cc3c(nn2)Oc2ccccc2N3C)CC1-expected1412)
        • PASSED [ 74%]
      • 1 ms
        failed(CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413)
        • FAILED [ 74%]
        • test_featurizers.py:45 (test_num_hacceptor_featurizer[CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413])
          array([[7]]) != array([8])
          test_input = 'CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1'
          expected = array([8.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hacceptors"),
          )
          def test_num_hacceptor_featurizer(test_input, expected):
          featurizer = HAcceptorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([8])
          E Full diff:
          E - array([8])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:56: AssertionError
      • 0 ms
        passed(CCc1c(C)[nH]c2c1C(=O)[C@@H]1CN(C)CC[C@H]1C2-expected1414)
        • PASSED [ 74%]
      • 0 ms
        passed(NC(=O)CN1CCCC1=O-expected1415)
        • PASSED [ 75%]
    • 76 ms
      test_num_hdonor_featurizer
      • 1 ms
        failed(CC(C)NCC(O)COc1cccc2ccccc12_[Cl]-expected0)
        • FAILED [ 75%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CC(C)NCC(O)COc1cccc2ccccc12.[Cl]-expected0])
          array([[2]]) != array([3])
          test_input = 'CC(C)NCC(O)COc1cccc2ccccc12.[Cl]', expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected1)
        • PASSED [ 75%]
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected2)
        • PASSED [ 75%]
      • 0 ms
        passed(CC(=O)NCCCOc1cccc(CN2CCCCC2)c1-expected3)
        • PASSED [ 75%]
      • 0 ms
        passed(Cc1onc(-c2ccccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected4)
        • PASSED [ 75%]
      • 0 ms
        passed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)C(=O)C1=O-expected5)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected6)
        • PASSED [ 75%]
      • 0 ms
        passed(Cc1nccn1CC1CCc2c(c3ccccc3n2C)C1=O-expected7)
        • PASSED [ 75%]
      • 0 ms
        passed(COc1ccc([C@@H]2Sc3ccccc3N(CCN(C)C)C(=O)[C@@H]2OC(C)=O)cc1-expected8)
        • PASSED [ 75%]
      • 0 ms
        passed(NC(N)=NC(=O)c1nc(Cl)c(N)nc1N-expected9)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(O)CO)n3)ncn2-c2cccc(Cl)c2C1=O-expected10)
        • PASSED [ 75%]
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](F)[C@@H](CO)O2)c(=O)[nH]c1=O-expected11)
        • PASSED [ 75%]
      • 0 ms
        passed(ClCCl-expected12)
        • PASSED [ 75%]
      • 0 ms
        passed(CC(C)(C)NC(=O)C1CC2CCCCC2CN1CC(O)C(Cc1ccccc1)NC(=O)C(CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected13)
        • PASSED [ 75%]
      • 0 ms
        passed(CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected14)
        • PASSED [ 75%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCn2nnn(CC)c2=O)CC1-expected15)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected16)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)[C@H](CO)c1ccccc1)C2-expected17)
        • PASSED [ 75%]
      • 0 ms
        passed(COc1ccc(Cl)cc1C(=O)NCCc1ccc(S(=O)(=O)NC(=O)NC2CCCCC2)cc1-expected18)
        • PASSED [ 75%]
      • 0 ms
        passed(Nc1nnc(-c2cccc(Cl)c2Cl)c(N)n1-expected19)
        • PASSED [ 75%]
      • 0 ms
        passed(CCCC(C)C-expected20)
        • PASSED [ 75%]
      • 0 ms
        passed(C[C@H](N)Cc1ccccc1-expected21)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected22)
        • PASSED [ 75%]
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1C[C@H](O)[C@H](O)C2-expected23)
        • PASSED [ 75%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1(COC)CCN(CCc2cccs2)CC1-expected24)
        • PASSED [ 75%]
      • 0 ms
        passed(CCNC(=NC#N)NCCSCc1ncccc1Br-expected25)
        • PASSED [ 75%]
      • 0 ms
        passed(Cc1ccc(-c2nc3ccc(C)cn3c2CC(=O)N(C)C)cc1-expected26)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1CCN(C2=c3ccccc3=Nc3ccc(Cl)cc3N2)CC1-expected27)
        • PASSED [ 75%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected28)
        • PASSED [ 75%]
      • 1 ms
        failed(CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O_O-expected29)
        • FAILED [ 75%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O.O-expected29])
          array([[3]]) != array([4])
          test_input = 'CCN1CCN(C(=O)N[C@@H](C(=O)N[C@@H]2C(=O)N3[C@@H]2SC(C)(C)[C@@H]3C(=O)O)c2ccccc2)C(=O)C1=O.O'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected30)
        • PASSED [ 75%]
      • 0 ms
        passed(C[C@H]1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected31)
        • PASSED [ 75%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected32)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1Cc2c(C(=O)OC(C)(C)C)ncn2-c2ccsc2C1=O-expected33)
        • PASSED [ 75%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)C1CCN(CCc2ccccc2)CC1-expected34)
        • PASSED [ 75%]
      • 0 ms
        passed(CCOC(=O)c1cncn1C(C)c1ccccc1-expected35)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)c1cc(-c2nc(N)n[nH]2)ccn1-expected36)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected37)
        • PASSED [ 75%]
      • 0 ms
        passed(Nc1ccc(-c2nc3ccc(O)cc3s2)cc1I-expected38)
        • PASSED [ 75%]
      • 0 ms
        passed(CC(=O)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected39)
        • PASSED [ 75%]
      • 0 ms
        passed(CN1[C@@H]2CCC[C@H]1CC(NC(=O)c1nn(C)c3ccccc13)C2-expected40)
        • PASSED [ 75%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CO)NC(=O)C(Cl)Cl)cc1-expected41)
        • PASSED [ 75%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2ccccc2)cs1-expected42)
        • PASSED [ 75%]
      • 0 ms
        passed(Cc1cccc(C)c1OCC(C)N-expected43)
        • PASSED [ 75%]
      • 0 ms
        passed(CCC(=O)O[C@](Cc1ccccc1)(c1ccccc1)[C@H](C)CN(C)C-expected44)
        • PASSED [ 75%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected45)
        • PASSED [ 75%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](O)c3ccccc3)[C@H]2SC1-expected46)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected47)
        • PASSED [ 75%]
      • 0 ms
        passed(O=C1CCCN1CCCCN1CCN(c2cc(C(F)(F)F)ccn2)CC1-expected48)
        • PASSED [ 75%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@H]1C[C@@H]2[C@@H](O)c1ccnc2ccc(OC)cc12-expected49)
        • PASSED [ 75%]
      • 0 ms
        passed(CCc1ccccc1-expected50)
        • PASSED [ 75%]
      • 0 ms
        passed(NC(N)=Nc1nc(-c2cccc(N)c2)cs1-expected51)
        • PASSED [ 75%]
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected52)
        • PASSED [ 75%]
      • 1 ms
        passed(CCC(C)C(N)C1=NC(C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](CCC(=O)O)C(=O)N[C@H](C(=O)NCCCC[C@@H]2NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](CC(=O)O)NC(=O)[C@H](Cc3cnc[nH]3)NC(=O)[C@@H](Cc3ccccc3)NC(=O)[C@H]([C@@H](C)CC)NC(=O)[C@@H](CCCN)NC2=O)[C@@H](C)CC)CS1-expected53)
        • PASSED [ 75%]
      • 0 ms
        passed(NCCCN1c2ccccc2Sc2ccc(Cl)cc21-expected54)
        • PASSED [ 75%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2[nH]cc(Cc3ccccc3)c2[N+](=O)[O-])o1-expected55)
        • PASSED [ 75%]
      • 0 ms
        passed(CNC(=NC#N)Nc1cccc(-c2csc(N=C(N)N)n2)c1-expected56)
        • PASSED [ 76%]
      • 0 ms
        passed(CNCCc1ccccn1-expected57)
        • PASSED [ 76%]
      • 1 ms
        failed(CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21_[Cl-]_[H+]-expected58)
        • FAILED [ 76%]
        • [14:08:25] WARNING: not removing hydrogen atom without neighbors
          [14:08:25] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21.[Cl-].[H+]-expected58])
          array([[1]]) != array([2])
          test_input = 'CN[C@H]1CC[C@@H](c2ccc(Cl)c(Cl)c2)c2ccccc21.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C=O)[C@H]3[C@@](O)(C(=O)OC)[C@H](OC(C)=O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected59)
        • PASSED [ 76%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected60)
        • PASSED [ 76%]
      • 0 ms
        passed(CNCCCC12CCC(c3ccccc31)c1ccccc12-expected61)
        • PASSED [ 76%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected62)
        • PASSED [ 76%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected63)
        • PASSED [ 76%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(C)=O)CS[C@@H]12)c1csc(N)n1_[Na+]-expected64)
        • PASSED [ 76%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected65)
        • PASSED [ 76%]
      • 0 ms
        passed(C1CCCCC1-expected66)
        • PASSED [ 76%]
      • 0 ms
        passed(Cc1csc(N=C(N)N)n1-expected67)
        • PASSED [ 76%]
      • 0 ms
        passed(CCCN(CCC)CCc1ccc(O)c2c1CC(=O)N2-expected68)
        • PASSED [ 76%]
      • 0 ms
        passed(CN1C[C@@H]2c3cc(Cl)ccc3Oc3ccccc3[C@@H]2C1-expected69)
        • PASSED [ 76%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected70)
        • PASSED [ 76%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected71)
        • PASSED [ 76%]
      • 0 ms
        passed(CC[N+](C)(C)Cc1ccccc1Br_Cc1ccc(S(=O)(=O)[O-])cc1-expected72)
        • PASSED [ 76%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected73)
        • PASSED [ 76%]
      • 0 ms
        passed(Cc1ncc([N+](=O)[O-])n1CC(O)CCl-expected74)
        • PASSED [ 76%]
      • 0 ms
        passed(CCCN(CCC)CCc1cccc2c1CC(=O)N2-expected75)
        • PASSED [ 76%]
      • 0 ms
        passed(Clc1ccc2c(c1)[C@H]1CNC[C@H]1c1ccccc1O2-expected76)
        • PASSED [ 76%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected77)
        • PASSED [ 76%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(=O)c(=O)[nH]n3C)CS[C@H]12)c1csc(N)n1-expected78)
        • PASSED [ 76%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected79)
        • PASSED [ 76%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1C(NC(C)=O)CC2-expected80)
        • PASSED [ 76%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected81)
        • PASSED [ 76%]
      • 0 ms
        passed(Cc1ncsc1CCCl-expected82)
        • PASSED [ 76%]
      • 0 ms
        passed(CCN(CC)C(=O)Nc1ccc(OCC(O)CNC(C)(C)C)c(C(C)=O)c1-expected83)
        • PASSED [ 76%]
      • 0 ms
        passed(FC(F)(F)CCl-expected84)
        • PASSED [ 76%]
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected85)
        • PASSED [ 76%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)Cc2cccs2)C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@@H]21-expected86)
        • PASSED [ 76%]
      • 0 ms
        passed(C=CC[C@H](N)c1ccccc1-c1noc2ccccc12-expected87)
        • PASSED [ 76%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2O-expected88)
        • PASSED [ 76%]
      • 0 ms
        passed(CC(=O)Nc1ccc(O)cc1-expected89)
        • PASSED [ 76%]
      • 0 ms
        passed(CC(=O)Oc1ccccc1C(=O)O-expected90)
        • PASSED [ 76%]
      • 0 ms
        passed(O=c1ncnc2[nH][nH]cc1-2-expected91)
        • PASSED [ 76%]
      • 0 ms
        passed(CCCCC[C@H](O)/C=C/[C@H]1[C@H](O)CC(=O)[C@@H]1CCCCCCC(=O)O-expected92)
        • PASSED [ 76%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O_Cn1c(=O)c2[nH]cnc2n(C)c1=O_NCCN-expected93)
        • PASSED [ 76%]
      • 0 ms
        passed(CCCCc1oc2ccccc2c1C(=O)c1cc(I)c(OCCN(CC)CC)c(I)c1-expected94)
        • PASSED [ 76%]
      • 1 ms
        failed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O_O_O_O-expected95)
        • FAILED [ 76%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O.O.O.O-expected95])
          array([[4]]) != array([7])
          test_input = 'CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O.O.O.O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected96)
        • PASSED [ 76%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected97)
        • PASSED [ 76%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(CCC3OCCCO3)CC1)c1ccccc1S2_O=C(O)CCC(=O)O-expected98)
        • PASSED [ 76%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2)=NC1O-expected99)
        • PASSED [ 76%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCOc2ccccc2)CC1-expected100)
        • PASSED [ 76%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@@]4(O)[C@@H](C2)N(C)CC[C@]314-expected101)
        • PASSED [ 76%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected102)
        • PASSED [ 76%]
      • 0 ms
        passed(CN1CCCC(CN2c3ccccc3Sc3ccccc32)C1-expected103)
        • PASSED [ 76%]
      • 0 ms
        passed(NC1=NC(=O)C(c2ccccc2)O1-expected104)
        • PASSED [ 76%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@@]2(C)c3cc(O)ccc3C[C@@H]1[C@H]2C-expected105)
        • PASSED [ 76%]
      • 0 ms
        passed(CCc1cc(C(N)=S)ccn1-expected106)
        • PASSED [ 76%]
      • 1 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](O[C@@H]3O[C@@H]5CO[C@@H](C)O[C@H]5[C@H](O)[C@H]3O)C3COC(=O)[C@@H]32)OCO4)cc(OC)c1O-expected107)
        • PASSED [ 76%]
      • 0 ms
        passed(NC(N)=Nc1nc(CSCCC(N)=NS(N)(=O)=O)cs1-expected108)
        • PASSED [ 76%]
      • 0 ms
        passed(OC(Cn1cncn1)(Cn1cncn1)c1ccc(F)cc1F-expected109)
        • PASSED [ 76%]
      • 0 ms
        passed(O=C([O-])P(=O)([O-])[O-]_[Na+]_[Na+]_[Na+]-expected110)
        • PASSED [ 76%]
      • 0 ms
        passed(NCC1(CC(=O)O)CCCCC1-expected111)
        • PASSED [ 76%]
      • 0 ms
        passed(CCOc1ccc2ccccc2c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)[O-]_[Na+]-expected112)
        • PASSED [ 76%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21-expected113)
        • PASSED [ 77%]
      • 1 ms
        passed(Cc1c(O)cccc1C(=O)N[C@@H](CSc1ccccc1)[C@H](O)CN1C[C@H]2CCCC[C@H]2C[C@H]1C(=O)NC(C)(C)C-expected114)
        • PASSED [ 77%]
      • 0 ms
        passed(COc1ccc(CCN2CCC(Nc3nc4ccccc4n3Cc3ccc(F)cc3)CC2)cc1-expected115)
        • PASSED [ 77%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected116)
        • PASSED [ 77%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected117)
        • FAILED [ 77%]
        • [14:08:25] WARNING: not removing hydrogen atom without neighbors
          [14:08:25] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]-expected117])
          array([[6]]) != array([7])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected118)
        • PASSED [ 77%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected119)
        • PASSED [ 77%]
      • 0 ms
        passed(C[C@@](Cc1ccc(O)c(O)c1)(NN)C(=O)O-expected120)
        • PASSED [ 77%]
      • 0 ms
        passed(CC(C)(C)NCC(O)COc1cccc2c1CCC(=O)N2-expected121)
        • PASSED [ 77%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)[O-])N3C(=O)[C@@H](NC(=O)Cn4cnnn4)[C@H]3SC2)s1_[Na+]-expected122)
        • PASSED [ 77%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CSc3ccncc3)[C@H]2SC1-expected123)
        • PASSED [ 77%]
      • 0 ms
        passed(O=C(O)CCCc1ccc(N(CCCl)CCCl)cc1-expected124)
        • PASSED [ 77%]
      • 0 ms
        passed(CCCN1C[C@H](CSC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected125)
        • PASSED [ 77%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Cc3ccccc32)CC1-expected126)
        • PASSED [ 77%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected127)
        • PASSED [ 77%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1-expected128)
        • PASSED [ 77%]
      • 0 ms
        passed(c1ccc(C2(N3CCCCC3)CCCCC2)cc1-expected129)
        • PASSED [ 77%]
      • 0 ms
        passed(NNCCc1ccccc1_O=S(=O)(O)O-expected130)
        • PASSED [ 77%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NC(=O)NC1=O-expected131)
        • PASSED [ 77%]
      • 0 ms
        passed(NC(=O)OCCCc1ccccc1-expected132)
        • PASSED [ 77%]
      • 0 ms
        passed(CNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected133)
        • PASSED [ 77%]
      • 0 ms
        passed(NCC(O)c1ccc(O)c(O)c1-expected134)
        • PASSED [ 77%]
      • 0 ms
        passed(COc1ccc2nc(S(=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1-expected135)
        • PASSED [ 77%]
      • 0 ms
        passed(Cc1onc(-c2ccccc2)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected136)
        • PASSED [ 77%]
      • 0 ms
        passed(OC[C@H]1O[C@@H](n2cnc3c2NC=NC[C@H]3O)C[C@@H]1O-expected137)
        • PASSED [ 77%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)COc3ccccc3)C(=O)N2[C@H]1C(=O)[O-]-expected138)
        • PASSED [ 77%]
      • 0 ms
        passed(O=C(NC(CO)C(O)c1ccc([N+](=O)[O-])cc1)C(Cl)Cl-expected139)
        • PASSED [ 77%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC=NS2(=O)=O-expected140)
        • PASSED [ 77%]
      • 0 ms
        passed(CCCNC(=O)NS(=O)(=O)c1ccc(Cl)cc1-expected141)
        • PASSED [ 77%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected142)
        • PASSED [ 77%]
      • 0 ms
        passed(NS(=O)(=O)c1cc(C2(O)NC(=O)c3ccccc32)ccc1Cl-expected143)
        • PASSED [ 77%]
      • 0 ms
        passed(CCOC(=O)C(C)(C)Oc1ccc(Cl)cc1-expected144)
        • PASSED [ 77%]
      • 0 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)O-expected145)
        • PASSED [ 77%]
      • 0 ms
        passed(Clc1ccccc1C(c1ccccc1)(c1ccccc1)n1ccnc1-expected146)
        • PASSED [ 77%]
      • 0 ms
        passed(C[C@]12C[C@H](O)[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2C(=O)CO-expected147)
        • PASSED [ 77%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected148)
        • PASSED [ 77%]
      • 0 ms
        passed(OCCC1CCN(CC/C=C2\\c3ccc(F)cc3Sc3ccc(C(F)(F)F)cc32)CC1-expected149)
        • PASSED [ 77%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected150)
        • PASSED [ 77%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3COc3ccc(Cl)cc32)CC1-expected151)
        • PASSED [ 77%]
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected152)
        • PASSED [ 77%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CC1CC1-expected153)
        • PASSED [ 77%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@@H]4C[C@H](O)CC[C@]4(C)[C@H]3CC[C@]12C-expected154)
        • PASSED [ 77%]
      • 0 ms
        passed(CCC1(c2ccccc2)C(=O)NCNC1=O-expected155)
        • PASSED [ 77%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)c1ccc(N)cc1-expected156)
        • PASSED [ 77%]
      • 0 ms
        passed(OC(CCN1CCCC1)(c1ccccc1)C1CCCCC1-expected157)
        • PASSED [ 77%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccccc21-expected158)
        • PASSED [ 77%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2[nH]ccc12-expected159)
        • PASSED [ 77%]
      • 1 ms
        passed(CO[C@H](C(=O)[C@@H](O)[C@@H](C)O)[C@@H]1Cc2cc3cc(O[C@H]4C[C@@H](O[C@H]5C[C@@H](O)[C@H](O)[C@@H](C)O5)[C@H](O)[C@@H](C)O4)c(C)c(O)c3c(O)c2C(=O)[C@H]1O[C@H]1C[C@@H](O[C@H]2C[C@@H](O[C@H]3C[C@](C)(O)[C@H](O)[C@@H](C)O3)[C@H](O)[C@@H](C)O2)[C@H](O)[C@@H](C)O1-expected160)
        • PASSED [ 77%]
      • 0 ms
        passed(CC[C@H](C)C(=O)O[C@H]1C[C@H](O)C=C2C=C[C@H](C)[C@H](CC[C@@H](O)C[C@@H](O)CC(=O)O)[C@H]21-expected161)
        • PASSED [ 77%]
      • 0 ms
        passed(O=C(C1CCCCC1)N1CC(=O)N2CCc3ccccc3C2C1-expected162)
        • PASSED [ 77%]
      • 0 ms
        passed(COc1cc(Cc2cnc(N)nc2N)cc(OC)c1OC-expected163)
        • PASSED [ 77%]
      • 0 ms
        passed(COc1cc(NCc2ccc3nc(N)nc(N)c3c2C)cc(OC)c1OC-expected164)
        • PASSED [ 77%]
      • 0 ms
        passed(NC(CO)(CO)CO-expected165)
        • PASSED [ 77%]
      • 0 ms
        passed(NC1[C@H]2CN(c3nc4c(cc3F)c(=O)c(C(=O)O)cn4-c3ccc(F)cc3F)C[C@@H]12-expected166)
        • PASSED [ 77%]
      • 0 ms
        passed(NC(N)=O-expected167)
        • PASSED [ 77%]
      • 0 ms
        passed(O=c1ccc2ccccc2o1-expected168)
        • PASSED [ 77%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)c2ccc(N)cc2)cc1-expected169)
        • PASSED [ 78%]
      • 0 ms
        passed(C[C@H](CCC(=O)O)[C@H]1CC[C@H]2[C@@H]3C(=O)C[C@@H]4CC(=O)CC[C@]4(C)[C@H]3CC(=O)[C@]12C-expected170)
        • PASSED [ 78%]
      • 0 ms
        passed(O=c1c(Cc2c(O)oc3ccccc3c2=O)c(O)oc2ccccc12-expected171)
        • PASSED [ 78%]
      • 0 ms
        passed(CCN(CC)CCOC(=O)C1(C2CCCCC2)CCCCC1-expected172)
        • PASSED [ 78%]
      • 0 ms
        passed(CC/C(=C(/CC)c1ccc(O)cc1)c1ccc(O)cc1-expected173)
        • PASSED [ 78%]
      • 1 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5CC[C@]5(C)[C@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected174)
        • PASSED [ 78%]
      • 0 ms
        passed(C[C@H]1O[C@@H](O[C@H]2[C@@H](O)C[C@H](O[C@H]3[C@@H](O)C[C@H](O[C@H]4CC[C@@]5(C)[C@H](CC[C@@H]6[C@@H]5C[C@@H](O)[C@]5(C)[C@@H](C7=CC(=O)OC7)CC[C@]65O)C4)O[C@@H]3C)O[C@@H]2C)C[C@H](O)[C@@H]1O-expected175)
        • PASSED [ 78%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1CCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1-expected176)
        • PASSED [ 78%]
      • 0 ms
        passed(CC(CN1c2ccccc2Sc2ccccc21)N(C)C-expected177)
        • PASSED [ 78%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CC(C)N(C)C)c1ccccc1S2-expected178)
        • PASSED [ 78%]
      • 0 ms
        passed(CC(C)c1cccc(C(C)C)c1O-expected179)
        • PASSED [ 78%]
      • 0 ms
        passed(CNCCCC1c2ccccc2C=Cc2ccccc21-expected180)
        • PASSED [ 78%]
      • 0 ms
        passed(O=c1cc[nH]nc1-expected181)
        • PASSED [ 78%]
      • 0 ms
        passed(Fc1ccccc1C1=NCC(=S)N(CC(F)(F)F)c2ccc(Cl)cc21-expected182)
        • PASSED [ 78%]
      • 0 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected183)
        • PASSED [ 78%]
      • 0 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5cc(OC)ccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected184)
        • PASSED [ 78%]
      • 0 ms
        passed(C=CCC1(C(C)CCC)C(=O)NC(=O)NC1=O-expected185)
        • PASSED [ 78%]
      • 1 ms
        failed(O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1_[Cl-]_[H+]-expected186)
        • FAILED [ 78%]
        • [14:08:25] WARNING: not removing hydrogen atom without neighbors
          [14:08:25] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1.[Cl-].[H+]-expected186])
          array([[1]]) != array([2])
          test_input = 'O=C1CSC2(CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)N1.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(O=C1C(=O)c2ccccc2C(O)=C1C1CCC(c2ccc(Cl)cc2)CC1-expected187)
        • PASSED [ 78%]
      • 0 ms
        passed(O=C(O)CCCCCCCC(=O)O-expected188)
        • PASSED [ 78%]
      • 1 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)C(C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)CN(C)[C@H](C)[C@@H](O)[C@]1(C)O-expected189)
        • PASSED [ 78%]
      • 0 ms
        passed(CC(C[N+](C)(C)C)OC(N)=O_[Cl-]-expected190)
        • PASSED [ 78%]
      • 1 ms
        passed(CC(C)C[C@H]1C(=O)N2CCC[C@H]2[C@]2(O)O[C@](NC(=O)[C@@H]3C=C4c5cccc6[nH]c(Br)c(c56)C[C@H]4N(C)C3)(C(C)C)C(=O)N12-expected191)
        • PASSED [ 78%]
      • 0 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1[C@](C)(O)C(C)(C)C)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected192)
        • PASSED [ 78%]
      • 0 ms
        passed(NCCc1ccc(O)c(O)c1-expected193)
        • PASSED [ 78%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected194)
        • PASSED [ 78%]
      • 1 ms
        failed(C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21_O-expected195)
        • FAILED [ 78%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21.O-expected195])
          array([[6]]) != array([7])
          test_input = 'C[C@H]1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@@H]21.O'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 1 ms
        failed(CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1_[Cl]-expected196)
        • FAILED [ 78%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1.[Cl]-expected196])
          array([[0]]) != array([1])
          test_input = 'CCCCOc1ccc(C(=O)CCN2CCCCC2)cc1.[Cl]', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)cc1-expected197)
        • PASSED [ 78%]
      • 0 ms
        passed(CC(C)[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)CNC(=O)[C@@H](C)NC(=O)[C@@H](N)Cc1ccc(O)cc1)C(N)=O-expected198)
        • PASSED [ 78%]
      • 0 ms
        passed(CN[C@@H](C)[C@H](O)c1ccccc1-expected199)
        • PASSED [ 78%]
      • 0 ms
        passed(CNC[C@H](O)c1ccc(O)c(O)c1-expected200)
        • PASSED [ 78%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected201)
        • PASSED [ 78%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C@@H]2O-expected202)
        • PASSED [ 78%]
      • 0 ms
        passed(Nc1c2c(nc3ccccc13)CCCC2-expected203)
        • PASSED [ 78%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2)c2cc(Cl)ccc21-expected204)
        • PASSED [ 78%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C1CC(=O)C(CC(C)C)CN1CC2-expected205)
        • PASSED [ 78%]
      • 0 ms
        passed(CCCCCc1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(C)=C[C@@H]21-expected206)
        • PASSED [ 78%]
      • 0 ms
        passed(COC1=CC=C2[C@H]3Cc4ccc(OC)c5c4[C@@]2(CCN3C)[C@H]1O5-expected207)
        • PASSED [ 78%]
      • 0 ms
        passed(CCSc1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected208)
        • PASSED [ 78%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCCN1C)c1ccccc1S2-expected209)
        • PASSED [ 78%]
      • 0 ms
        passed(CN1CCN(CC/C=C2\\c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected210)
        • PASSED [ 78%]
      • 0 ms
        failed(N[C@@H]1C[C@H]1c1ccccc1_[Cl-]_[H+]-expected211)
        • FAILED [ 78%]
        • [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[N[C@@H]1C[C@H]1c1ccccc1.[Cl-].[H+]-expected211])
          array([[1]]) != array([2])
          test_input = 'N[C@@H]1C[C@H]1c1ccccc1.[Cl-].[H+]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(O=c1n(CCCN2CCN(c3cccc(Cl)c3)CC2)nc2ccccn12-expected212)
        • PASSED [ 78%]
      • 0 ms
        passed(CS(=O)(=O)OCCCCOS(C)(=O)=O-expected213)
        • PASSED [ 78%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)C3=CCC=CC3)[C@H]2SC1-expected214)
        • PASSED [ 78%]
      • 0 ms
        passed(CCN(CC)CCCC(C)Nc1ccnc2cc(Cl)ccc12-expected215)
        • PASSED [ 78%]
      • 1 ms
        failed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC_O-expected216)
        • FAILED [ 78%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC.O-expected216])
          array([[2]]) != array([3])
          test_input = 'COc1cc(N)c(Cl)cc1C(=O)NC1CCN(CCCOc2ccc(F)cc2)CC1OC.O'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(Nc1nc(Cl)nc2c1ncn2[C@H]1C[C@H](O)[C@@H](CO)O1-expected217)
        • PASSED [ 78%]
      • 0 ms
        passed(C[N+]12CCC(CC1)C(OC(=O)C(O)(c1ccccc1)c1ccccc1)C2_[Br-]-expected218)
        • PASSED [ 78%]
      • 0 ms
        passed(C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CCC2=O-expected219)
        • PASSED [ 78%]
      • 0 ms
        passed(C=C(CC)C(=O)c1ccc(OCC(=O)O)c(Cl)c1Cl-expected220)
        • PASSED [ 78%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(O)ccc4[C@H]3CC[C@@]21C-expected221)
        • PASSED [ 78%]
      • 0 ms
        passed(CC(Cc1ccc(O)cc1)NCC(O)c1cc(O)cc(O)c1-expected222)
        • PASSED [ 78%]
      • 0 ms
        passed(O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1F-expected223)
        • PASSED [ 78%]
      • 0 ms
        passed(Cc1onc(-c2c(F)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected224)
        • PASSED [ 78%]
      • 0 ms
        passed(O=c1[nH]cc(F)c(=O)[nH]1-expected225)
        • PASSED [ 78%]
      • 0 ms
        passed(NS(=O)(=O)c1cc(C(=O)O)c(NCc2ccco2)cc1Cl-expected226)
        • PASSED [ 79%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COC(CO)CO)c2[nH]1-expected227)
        • PASSED [ 79%]
      • 0 ms
        passed(C[N+]1(C)CCC(OC(=O)C(O)(c2ccccc2)C2CCCC2)C1_[Br-]-expected228)
        • PASSED [ 79%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2cccc(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected229)
        • PASSED [ 79%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected230)
        • PASSED [ 79%]
      • 0 ms
        passed(CN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected231)
        • PASSED [ 79%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CCCCC1-expected232)
        • PASSED [ 79%]
      • 0 ms
        passed(COc1cc(C(=O)N2CCOCC2)cc(OC)c1OC-expected233)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(CN(C)C)CN1c2ccccc2CCc2ccccc21-expected234)
        • PASSED [ 79%]
      • 0 ms
        passed(CCCCNC(=O)OCC(C)(CCC)COC(N)=O-expected235)
        • PASSED [ 79%]
      • 0 ms
        passed(O=c1ccn(C2OC(CO)C(O)C2O)c(=O)[nH]1-expected236)
        • PASSED [ 79%]
      • 0 ms
        passed(CCCC(CCC)C(=O)O-expected237)
        • PASSED [ 79%]
      • 0 ms
        passed(CN(C)C/C=C(/c1ccc(Br)cc1)c1cccnc1-expected238)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C)N=c1cc2n(-c3ccc(Cl)cc3)c3ccccc3nc-2cc1Nc1ccc(Cl)cc1-expected239)
        • PASSED [ 79%]
      • 0 ms
        passed(COc1cc2c(c(OC)c1OC)-c1ccc(OC)c(=O)cc1[C@@H](NC(C)=O)CC2-expected240)
        • PASSED [ 79%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2cc(OCC(O)COc3cccc4oc(C(=O)O)cc(=O)c34)ccc2o1-expected241)
        • PASSED [ 79%]
      • 0 ms
        passed(NC1CONC1=O-expected242)
        • PASSED [ 79%]
      • 0 ms
        passed(NC(=O)NO-expected243)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C)[N+]1(C)C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2_[Br-]-expected244)
        • PASSED [ 79%]
      • 0 ms
        passed(NC(N)=N/N=C/c1c(Cl)cccc1Cl-expected245)
        • PASSED [ 79%]
      • 0 ms
        passed(NC(N)=NCCN1CCCCCCC1-expected246)
        • PASSED [ 79%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(O)c1ccccc1)C2-expected247)
        • PASSED [ 79%]
      • 0 ms
        passed(NNc1nncc2ccccc12-expected248)
        • PASSED [ 79%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NCNS2(=O)=O-expected249)
        • PASSED [ 79%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected250)
        • PASSED [ 79%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1C(F)(F)F)NCNS2(=O)=O-expected251)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C)Cc1ccc(C(C)C(=O)O)cc1-expected252)
        • PASSED [ 79%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected253)
        • PASSED [ 79%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected254)
        • PASSED [ 79%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCC[C@H]2O-expected255)
        • PASSED [ 79%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1)=NC2-expected256)
        • PASSED [ 79%]
      • 0 ms
        passed(O=NN(CCCl)C(=O)NCCCl-expected257)
        • PASSED [ 79%]
      • 0 ms
        passed(CCC(C)n1ncn(-c2ccc(N3CCN(c4ccc(OC[C@H]5CO[C@](Cn6cncn6)(c6ccc(Cl)cc6Cl)O5)cc4)CC3)cc2)c1=O-expected258)
        • PASSED [ 79%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(O)C(O)C1O-expected259)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C(=O)O)c1cccc(C(=O)c2ccccc2)c1-expected260)
        • PASSED [ 79%]
      • 0 ms
        passed(O=C(c1ccccc1)c1ccc2n1CCC2C(=O)O-expected261)
        • PASSED [ 79%]
      • 0 ms
        passed(C[C@H](N)[C@H](O)c1cccc(O)c1-expected262)
        • PASSED [ 79%]
      • 0 ms
        passed(NNC(=O)c1ccncc1-expected263)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(O)c(O)c1-expected264)
        • PASSED [ 79%]
      • 0 ms
        passed(O=c1c(O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)c(-c2ccc(O)c(O)c2)oc2cc(O)cc(O)c12-expected265)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(=O)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4ccnc4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected266)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(CCc1ccccc1)NCC(O)c1ccc(O)c(C(N)=O)c1-expected267)
        • PASSED [ 79%]
      • 0 ms
        passed(N[C@@H](Cc1ccc(O)c(O)c1)C(=O)O-expected268)
        • PASSED [ 79%]
      • 0 ms
        passed(OCC(O)C(O)C(O)C(O)CO-expected269)
        • PASSED [ 79%]
      • 0 ms
        passed(C=C1c2c(Cl)ccc(O)c2C(O)=C2C(=O)C3(O)C(=O)/C(=C(/N)O)C(=O)C(N(C)C)C3C(O)C12-expected270)
        • PASSED [ 79%]
      • 0 ms
        passed(Cc1ccc(Cl)c(Nc2ccccc2C(=O)O)c1Cl-expected271)
        • PASSED [ 79%]
      • 0 ms
        passed(Cc1cccc(Nc2ccccc2C(=O)O)c1C-expected272)
        • PASSED [ 79%]
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1nc[nH]c1C-expected273)
        • PASSED [ 79%]
      • 0 ms
        passed(Clc1cccc(Cl)c1NC1=NCCN1-expected274)
        • PASSED [ 79%]
      • 0 ms
        passed(O=c1nc[nH]c2c1ncn2[C@H]1CC[C@@H](CO)O1-expected275)
        • PASSED [ 79%]
      • 0 ms
        passed(COCCc1ccc(OCC(O)CNC(C)C)cc1-expected276)
        • PASSED [ 79%]
      • 0 ms
        passed(Cc1ncc([N+](=O)[O-])n1CCO-expected277)
        • PASSED [ 79%]
      • 0 ms
        passed(CC#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CCC4=C3[C@@H](c3ccc(N(C)C)cc3)C[C@@]21C-expected278)
        • PASSED [ 79%]
      • 0 ms
        passed(CN(C)c1ccc(O)c2c1C[C@H]1C[C@H]3[C@H](N(C)C)C(O)=C(C(N)=O)C(=O)[C@@]3(O)C(O)=C1C2=O-expected279)
        • PASSED [ 79%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected280)
        • PASSED [ 79%]
      • 0 ms
        passed(CC(C)[N+](C)(CCOC(=O)C1c2ccccc2Oc2ccccc21)C(C)C_[Br-]-expected281)
        • PASSED [ 79%]
      • 0 ms
        passed(NC(=O)c1cnccn1-expected282)
        • PASSED [ 79%]
      • 0 ms
        passed(CN(C)C(=O)Oc1ccc[n+](C)c1_[Br-]-expected283)
        • PASSED [ 80%]
      • 0 ms
        passed(CCc1nc(N)nc(N)c1-c1ccc(Cl)cc1-expected284)
        • PASSED [ 80%]
      • 0 ms
        passed(C=C[C@H]1CN2CC[C@@H]1C[C@H]2[C@H](O)c1ccnc2ccc(OC)cc12-expected285)
        • PASSED [ 80%]
      • 0 ms
        passed(NC(Cc1ccc(N(CCCl)CCCl)cc1)C(=O)O-expected286)
        • PASSED [ 80%]
      • 0 ms
        passed(C[N+]1(C)CCCC(OC(=O)C(O)(c2ccccc2)c2ccccc2)C1_[Br-]-expected287)
        • PASSED [ 80%]
      • 0 ms
        passed(COc1ccc(CN(CCN(C)C)c2ccccn2)cc1-expected288)
        • PASSED [ 80%]
      • 0 ms
        passed(c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2-expected289)
        • PASSED [ 80%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCc4cc(OC)ccc4[C@H]3CC[C@@]21C-expected290)
        • PASSED [ 80%]
      • 0 ms
        passed(CC[N+](C)(CC)CCOC(=O)C1c2ccccc2Oc2ccccc21-expected291)
        • PASSED [ 80%]
      • 0 ms
        passed(CN(Cc1cnc2nc(N)nc(N)c2n1)c1ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc1-expected292)
        • PASSED [ 80%]
      • 0 ms
        passed(CN1C(CCl)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected293)
        • PASSED [ 80%]
      • 0 ms
        passed(C[C@](N)(Cc1ccc(O)c(O)c1)C(=O)O-expected294)
        • PASSED [ 80%]
      • 1 ms
        failed(COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1_[Cl-]_[Cl-]_[Cl-]_[H+]_[H+]_[H+]-expected295)
        • FAILED [ 80%]
        • [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1.[Cl-].[Cl-].[Cl-].[H+].[H+].[H+]-expected295])
          array([[2]]) != array([5])
          test_input = 'COc1cccnc1CCCCNc1ncc(Cc2ccc(C)nc2)c(=O)[nH]1.[Cl-].[Cl-].[Cl-].[H+].[H+].[H+]'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC(C)c1nc(-c2ncn3c2CN(C)C(=O)c2c(Cl)cccc2-3)no1-expected296)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1ccc(Cc2cnc(NCCSCc3ccc(C(C)(C)N)o3)[nH]c2=O)cn1-expected297)
        • PASSED [ 80%]
      • 0 ms
        passed(CN1CCN2c3ccccc3Cc3ccccc3C2C1-expected298)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected299)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(C)c1nc(CN(C)C(=O)N[C@H](C(=O)N[C@@H](Cc2ccccc2)C[C@H](O)[C@H](Cc2ccccc2)NC(=O)OCc2cncs2)C(C)C)cs1-expected300)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(C)(C)NC(=O)[C@@H]1C[C@@H]2CCCC[C@@H]2CN1C[C@@H](O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)c1ccc2ccccc2n1-expected301)
        • PASSED [ 80%]
      • 0 ms
        passed(FCOC(C(F)(F)F)C(F)(F)F-expected302)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(=O)Nc1c(I)c(NC(C)=O)c(I)c(C(=O)[O-])c1I_[Na+]-expected303)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(C)NCC(O)c1ccc(NS(C)(=O)=O)cc1-expected304)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1cn([C@H]2C=C[C@@H](CO)O2)c(=O)[nH]c1=O-expected305)
        • PASSED [ 80%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N=C(N)N)[C@@H](O)[C@@H]3N=C(N)N)O[C@@H](C)[C@]2(O)C=O)O[C@@H](CO)[C@H](O)[C@H]1O-expected306)
        • PASSED [ 80%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)Nc2ncccn2)cc1-expected307)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1noc(NS(=O)(=O)c2ccc(N)cc2)c1C-expected308)
        • PASSED [ 80%]
      • 0 ms
        passed(C[C@H]1C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2CC[C@]3(O)C(=O)CO)[C@@]2(C)C=CC(=O)C=C12-expected309)
        • PASSED [ 80%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected310)
        • PASSED [ 80%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@H]43)[C@@H]1CC[C@@H]2O-expected311)
        • PASSED [ 80%]
      • 0 ms
        passed(CCOC(=O)C(c1c(O)oc2ccccc2c1=O)c1c(O)oc2ccccc2c1=O-expected312)
        • PASSED [ 80%]
      • 0 ms
        passed(OCc1cccnc1-expected313)
        • PASSED [ 80%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@@H]4[C@H]3CC[C@@]21C-expected314)
        • PASSED [ 80%]
      • 0 ms
        passed(NCC(O)c1cccc(O)c1-expected315)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(CCc1ccccc1)NC(C)C(O)c1ccc(O)cc1-expected316)
        • PASSED [ 80%]
      • 0 ms
        passed(C[C@]12COC(=O)C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected317)
        • PASSED [ 80%]
      • 0 ms
        passed(O=C(O)CCc1nc(-c2ccccc2)c(-c2ccccc2)o1-expected318)
        • PASSED [ 80%]
      • 0 ms
        passed(CN1CCN2c3ncccc3Cc3ccccc3C2C1-expected319)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1ccnc2c1NC(=O)c1cccnc1N2C1CC1-expected320)
        • PASSED [ 80%]
      • 0 ms
        passed(FC(F)(F)c1ccc(N2CCNCC2)nc1Cl-expected321)
        • PASSED [ 80%]
      • 0 ms
        passed(CN/C(=C\\[N+](=O)[O-])NCCSCc1ccc(CN(C)C)o1-expected322)
        • PASSED [ 80%]
      • 0 ms
        passed(Cc1cc(NS(=O)(=O)c2ccc(N)cc2)no1-expected323)
        • PASSED [ 80%]
      • 0 ms
        passed(CC/C(=C(\\c1ccccc1)c1ccc(OCCN(C)C)cc1)c1ccccc1-expected324)
        • PASSED [ 80%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](C(=O)[O-])c3ccsc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected325)
        • PASSED [ 80%]
      • 0 ms
        passed(CC[C@@]1(O)C(=O)OCc2c1cc1n(c2=O)Cc2cc3c(CN(C)C)c(O)ccc3nc2-1-expected326)
        • PASSED [ 80%]
      • 0 ms
        passed(Nc1ccn([C@H]2CC[C@@H](CO)O2)c(=O)n1-expected327)
        • PASSED [ 80%]
      • 0 ms
        passed(NS(=O)(=O)Cc1noc2ccccc12-expected328)
        • PASSED [ 80%]
      • 0 ms
        passed(C[C@@H]1[C@H](O)[C@@H](C)/C=C\\C=C/C=C\\C=C/C=C\\C=C/C=C\\[C@H](O[C@@H]2O[C@H](C)[C@@H](O)[C@H](N)[C@@H]2O)C[C@@H]2O[C@](O)(C[C@@H](O)C[C@@H](O)[C@H](O)CC[C@@H](O)C[C@@H](O)CC(=O)O[C@H]1C)C[C@H](O)[C@H]2C(=O)O-expected329)
        • PASSED [ 80%]
      • 0 ms
        passed(Nc1nc(=O)c2c([nH]1)NCC(CNc1ccc(C(=O)N[C@@H](CCC(=O)[O-])C(=O)[O-])cc1)N2C=O_[Ca+2]-expected330)
        • PASSED [ 80%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12_O_O-expected331)
        • FAILED [ 80%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O-expected331])
          array([[7]]) != array([9])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3[C@H](O)[C@@H]12.O.O'
          expected = array([9.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[7]]) == array([9])
          E Full diff:
          E - array([9])
          E ? ^
          E + array([[7]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(COc1ccc(Cc2nccc3cc(OC)c(OC)cc23)cc1OC-expected332)
        • PASSED [ 80%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)Cc3ccccc3)C(=O)N2[C@H]1C(=O)O-expected333)
        • PASSED [ 80%]
      • 0 ms
        passed(CCOc1ccc(NC(C)=O)cc1-expected334)
        • PASSED [ 80%]
      • 0 ms
        passed(Nc1ccc(N=Nc2ccccc2)c(N)n1-expected335)
        • PASSED [ 80%]
      • 0 ms
        passed(CN(C)CCC(c1ccccc1)c1ccccn1-expected336)
        • PASSED [ 80%]
      • 0 ms
        passed(O=C1OC(c2ccc(O)cc2)(c2ccc(O)cc2)c2ccccc21-expected337)
        • PASSED [ 80%]
      • 0 ms
        passed(CC(COc1ccccc1)N(CCCl)Cc1ccccc1-expected338)
        • PASSED [ 80%]
      • 0 ms
        passed(CCCCC1C(=O)N(c2ccccc2)N(c2ccccc2)C1=O-expected339)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)n1-expected340)
        • PASSED [ 81%]
      • 0 ms
        passed(Cc1nc2n(c(=O)c1CCN1CCC(c3noc4cc(F)ccc34)CC1)CCCC2-expected341)
        • PASSED [ 81%]
      • 0 ms
        passed(CN1CC[C@@]2(C)c3cc(OC(=O)Nc4ccccc4)ccc3N(C)[C@@H]12-expected342)
        • PASSED [ 81%]
      • 0 ms
        passed(Cc1ccc(Cc2cnc(NCCCCc3ncc(Br)cc3C)[nH]c2=O)cn1-expected343)
        • PASSED [ 81%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2[C@@H]3[C@H](C)CC4=C(CCC(=O)C4)[C@H]3CC[C@@]21C-expected344)
        • PASSED [ 81%]
      • 1 ms
        passed(CC(C)(O/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)[O-])=C(C[n+]3ccccc3)CS[C@H]12)c1csc(N)n1)C(=O)O-expected345)
        • PASSED [ 81%]
      • 0 ms
        passed(Nc1[nH]c(=O)ncc1F-expected346)
        • PASSED [ 81%]
      • 0 ms
        passed(NC(N)=NCC1COC2(CCCCC2)O1-expected347)
        • PASSED [ 81%]
      • 0 ms
        passed(O=NN(CCCl)C(=O)NC1CCCCC1-expected348)
        • PASSED [ 81%]
      • 0 ms
        passed(O=S(=O)([O-])CCS_[Na+]-expected349)
        • PASSED [ 81%]
      • 0 ms
        passed(CN(N=O)C(=O)N[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O-expected350)
        • PASSED [ 81%]
      • 1 ms
        passed(COc1cc([C@@H]2c3cc4c(cc3[C@@H](OC3OC5COC(c6cccs6)OC5C(O)C3O)[C@H]3COC(=O)[C@H]23)OCO4)cc(OC)c1O-expected351)
        • PASSED [ 81%]
      • 0 ms
        passed(S=P(N1CC1)(N1CC1)N1CC1-expected352)
        • PASSED [ 81%]
      • 1 ms
        passed(CN[C@H](CC(C)C)C(=O)NC1C(=O)N[C@@H](CC(N)=O)C(=O)N[C@H]2C(=O)N[C@H]3C(=O)N[C@H](C(=O)N[C@@H](C(=O)O)c4cc(O)cc(O)c4-c4cc3ccc4O)[C@H](O)c3ccc(c(Cl)c3)Oc3cc2cc(c3O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O[C@H]2C[C@](C)(N)[C@H](O)[C@H](C)O2)Oc2ccc(cc2Cl)[C@H]1O-expected353)
        • PASSED [ 81%]
      • 0 ms
        passed(CN1C(CSCC(F)(F)F)Nc2cc(Cl)c(S(N)(=O)=O)cc2S1(=O)=O-expected354)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected355)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2C(=O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected356)
        • PASSED [ 81%]
      • 0 ms
        passed(CCCN(CCC)S(=O)(=O)c1ccc(C(=O)O)cc1-expected357)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3CC[C@]12C-expected358)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)NCC(O)COc1cccc2ccccc12-expected359)
        • PASSED [ 81%]
      • 0 ms
        passed(CC1OC(O[C@@H]2C=C3CC[C@@H]4[C@H](CC[C@]5(C)[C@@H](c6ccc(=O)oc6)CC[C@]45O)[C@@]3(C)CC2)C(O)C(O)C1O-expected360)
        • PASSED [ 81%]
      • 0 ms
        passed(COc1ccc(C[C@H](N)C(=O)NC2[C@@H](O)[C@H](n3cnc4c(N(C)C)ncnc43)O[C@@H]2CO)cc1-expected361)
        • PASSED [ 81%]
      • 0 ms
        passed(NC(=O)c1ncn([C@@H]2O[C@H](CO)[C@@H](O)[C@H]2O)n1-expected362)
        • PASSED [ 81%]
      • 0 ms
        passed(CN=C(NC#N)NCCSCc1csc(N=C(N)N)n1-expected363)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(O)/C=C\\C(=O)O_O=C(O)/C=C\\C(=O)O_c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3s2)c1-expected364)
        • PASSED [ 81%]
      • 0 ms
        passed(OCc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2-expected365)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(Cl)(Cl)Cl-expected366)
        • PASSED [ 81%]
      • 0 ms
        passed(FC(F)(F)CCl-expected367)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)CO-expected368)
        • PASSED [ 81%]
      • 0 ms
        passed(CCC(C)(C)C-expected369)
        • PASSED [ 81%]
      • 0 ms
        passed(Nc1ncnc2c1ncn2C1OC(CO)C(O)C1O-expected370)
        • PASSED [ 81%]
      • 0 ms
        passed(CN1Cc2c(-c3noc(C(C)(C)O)n3)ncn2-c2cccc(Cl)c2C1=O-expected371)
        • PASSED [ 81%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2cnc[nH]2)CC1-expected372)
        • PASSED [ 81%]
      • 1 ms
        passed(COC1C=COC2(C)Oc3c(C)c(O)c4c(O)c(c(C=NN5CCN(C)CC5)c(O)c4c3C2=O)NC(=O)C(C)=CC=CC(C)C(O)C(C)C(O)C(C)C(OC(C)=O)C1C-expected373)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(O)c1ccccc1O-expected374)
        • PASSED [ 81%]
      • 0 ms
        passed(CN1[C@@H]2CC(OC(=O)[C@H](CO)c3ccccc3)C[C@H]1[C@@H]1O[C@@H]12-expected375)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(=O)S[C@@H]1CC2=CC(=O)CC[C@]2(C)[C@H]2CC[C@@]3(C)[C@@H](CC[C@@]34CCC(=O)O4)[C@H]12-expected376)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12Cc3cn[nH]c3C[C@@H]1CC[C@@H]1[C@@H]2CC[C@@]2(C)[C@H]1CC[C@]2(C)O-expected377)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(O)C1=C/C(=N\\Nc2ccc(S(=O)(=O)Nc3ccccn3)cc2)C=CC1=O-expected378)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)N1CCN(c2ccc(OC[C@H]3CO[C@](Cn4cncn4)(c4ccc(Cl)cc4Cl)O3)cc2)CC1-expected379)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@@H]1[C@@H]2CC[C@]2(C)OC(=O)CC[C@@H]12-expected380)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2O-expected381)
        • PASSED [ 81%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected382)
        • PASSED [ 81%]
      • 0 ms
        passed(CCCC(C)CC-expected383)
        • PASSED [ 81%]
      • 0 ms
        passed(CCC(C)CC-expected384)
        • PASSED [ 81%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2O-expected385)
        • PASSED [ 81%]
      • 0 ms
        passed(Cc1c(N(C)C)c(=O)n(-c2ccccc2)n1C-expected386)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)NCC(O)COc1ccc(CC(N)=O)cc1-expected387)
        • PASSED [ 81%]
      • 0 ms
        passed(c1ccccc1-expected388)
        • PASSED [ 81%]
      • 0 ms
        passed(CC(C)(C)OC(=O)c1ncn2c1[C@@H]1CCCN1C(=O)c1c(Br)cccc1-2-expected389)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Br)cc2)CC1)c1ccc(F)cc1-expected390)
        • PASSED [ 81%]
      • 0 ms
        passed(OC(c1cc(C(F)(F)F)nc2c(C(F)(F)F)cccc12)C1CCCCN1-expected391)
        • PASSED [ 81%]
      • 0 ms
        passed(CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23-expected392)
        • PASSED [ 81%]
      • 0 ms
        passed(CN1c2ccccc2C(c2ccccc2F)=NCC1CNC(=O)c1ccsc1-expected393)
        • PASSED [ 81%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@]2(C=O)[C@@H](C(=O)CO)CC[C@@H]12-expected394)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCCC[C@H]1CN1CCCC1-expected395)
        • PASSED [ 81%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2ccccc2[C@H]1CN1CCCC1-expected396)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(Cc1ccc(C(F)(F)F)cc1)N1CCCC[C@H]1CN1CCCC1-expected397)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2sccc2[C@H]1CN1CCCC1-expected398)
        • PASSED [ 82%]
      • 0 ms
        passed(Cn1c(=O)c2[nH]cnc2n(C)c1=O-expected399)
        • PASSED [ 82%]
      • 0 ms
        passed(Nc1nc(=S)c2[nH]cnc2[nH]1-expected400)
        • PASSED [ 82%]
      • 0 ms
        passed(Cc1ccc(S(=O)(=O)NC(=O)NN2CCCCCC2)cc1-expected401)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCNC(=O)NS(=O)(=O)c1ccc(C)cc1-expected402)
        • PASSED [ 82%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@@H](O)[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected403)
        • PASSED [ 82%]
      • 0 ms
        passed(Nc1nc(N)c2nc(-c3ccccc3)c(N)nc2n1-expected404)
        • PASSED [ 82%]
      • 0 ms
        passed(NS(=O)(=O)c1cc2c(cc1Cl)NC(C(Cl)Cl)NS2(=O)=O-expected405)
        • PASSED [ 82%]
      • 1 ms
        passed(CC(C)C1NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC(=O)[C@@H](C(C)C)NC(=O)[C@@H](C(C)C)OC(=O)[C@H](C(C)C)NC(=O)[C@H](C)OC1=O-expected406)
        • PASSED [ 82%]
      • 0 ms
        passed(COc1ccc(CCN(C)CCCC(C#N)(c2ccc(OC)c(OC)c2)C(C)C)cc1OC-expected407)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(=O)CC(c1ccccc1)c1c(O)oc2ccccc2c1=O-expected408)
        • PASSED [ 82%]
      • 0 ms
        passed(CCC(C)=O-expected409)
        • PASSED [ 82%]
      • 0 ms
        passed(C1CC1-expected410)
        • PASSED [ 82%]
      • 0 ms
        passed(NCCCN1c2ccccc2CCc2ccccc21-expected411)
        • PASSED [ 82%]
      • 0 ms
        passed(ClCCl-expected412)
        • PASSED [ 82%]
      • 0 ms
        passed(CCOCC-expected413)
        • PASSED [ 82%]
      • 0 ms
        passed(C=COC=C-expected414)
        • PASSED [ 82%]
      • 0 ms
        passed(FC(F)OC(F)(F)C(F)Cl-expected415)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2[nH]cnc2[C@H]1CN1CCCC1-expected416)
        • PASSED [ 82%]
      • 0 ms
        passed(CC1(C)CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected417)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(C)(C(=O)O)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected418)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(O)COCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected419)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(O)c1cn(C2CC2)c2cc(N3CCNCC3)c(F)cc2c1=O-expected420)
        • PASSED [ 82%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCO-expected421)
        • PASSED [ 82%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CCCCO-expected422)
        • PASSED [ 82%]
      • 0 ms
        passed(COC(=O)[C@@H]1[C@H]2C[C@H]3c4[nH]c5ccccc5c4CCN3C[C@@H]2CC[C@@H]1O-expected423)
        • PASSED [ 82%]
      • 0 ms
        passed(Cc1cn([C@H]2C[C@H](N=[N+]=[N-])[C@@H](CO)O2)c(=O)[nH]c1=O-expected424)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected425)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected426)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected427)
        • PASSED [ 82%]
      • 0 ms
        passed(C=CCC1(CC=C)C(=O)NC(=O)NC1=O-expected428)
        • PASSED [ 82%]
      • 1 ms
        failed(NC12CC3CC(CC(C3)C1)C2_[Cl-]_[H+]-expected429)
        • FAILED [ 82%]
        • [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[NC12CC3CC(CC(C3)C1)C2.[Cl-].[H+]-expected429])
          array([[1]]) != array([2])
          test_input = 'NC12CC3CC(CC(C3)C1)C2.[Cl-].[H+]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2CCc2ccccc21-expected430)
        • PASSED [ 82%]
      • 0 ms
        passed(CCC1(CCC(C)C)C(=O)NC(=O)NC1=O-expected431)
        • PASSED [ 82%]
      • 0 ms
        passed(CC(N)Cc1ccccc1-expected432)
        • PASSED [ 82%]
      • 0 ms
        passed(CCO-expected433)
        • PASSED [ 82%]
      • 0 ms
        passed(CCc1ccccc1-expected434)
        • PASSED [ 82%]
      • 0 ms
        passed(CCOC(=O)c1ncn2c1CN(C)C(=O)c1cc(F)ccc1-2-expected435)
        • PASSED [ 82%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2F)c2cc([N+](=O)[O-])ccc21-expected436)
        • PASSED [ 82%]
      • 0 ms
        passed(C=COCC(F)(F)F-expected437)
        • PASSED [ 82%]
      • 0 ms
        passed(FC(F)(F)C(Cl)Br-expected438)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCCCC-expected439)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCCC-expected440)
        • PASSED [ 82%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1C-expected441)
        • PASSED [ 82%]
      • 0 ms
        passed(CCn1ccc(=O)c(O)c1C-expected442)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCn1ccc(=O)c(O)c1C-expected443)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected444)
        • PASSED [ 82%]
      • 0 ms
        passed(CCCCCn1ccc(=O)c(O)c1C-expected445)
        • PASSED [ 82%]
      • 0 ms
        passed(Cc1c(O)c(=O)ccn1CCCO-expected446)
        • PASSED [ 82%]
      • 0 ms
        passed(CCc1c(O)c(=O)ccn1CC-expected447)
        • PASSED [ 82%]
      • 0 ms
        passed(CN1CCN(c2cc3c(cc2F)c(=O)c(C(=O)O)cn3-c2ccc(F)cc2)CC1-expected448)
        • PASSED [ 82%]
      • 0 ms
        passed(Cc1cc(=O)n(-c2ccccc2)n1C-expected449)
        • PASSED [ 82%]
      • 0 ms
        passed(CN1CCc2cccc3c2[C@H]1Cc1ccc(O)c(O)c1-3-expected450)
        • PASSED [ 82%]
      • 0 ms
        passed(COC(=O)C1=CCCN(C)C1-expected451)
        • PASSED [ 82%]
      • 0 ms
        passed(O=C(CCCN1CCN(c2ccccn2)CC1)c1ccc(F)cc1-expected452)
        • PASSED [ 82%]
      • 1 ms
        failed(CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1_[Cl-]_[H+]-expected453)
        • FAILED [ 83%]
        • [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]-expected453])
          array([[1]]) != array([2])
          test_input = 'CCN(CC)CCOC(=O)C(O)(c1ccccc1)c1ccccc1.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(O=C(CCCN1CCC(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected454)
        • PASSED [ 83%]
      • 0 ms
        passed(CCOC(=O)c1ccc(N)cc1-expected455)
        • PASSED [ 83%]
      • 0 ms
        passed(CCN(CC)C(=O)C1CN2CCc3cc(OC)c(OC)cc3C2CC1OC(C)=O-expected456)
        • PASSED [ 83%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(c1ccccc1)c1ccccc1)C2_O=S(=O)(O)O-expected457)
        • PASSED [ 83%]
      • 0 ms
        passed(OC(CCN1CCCCC1)(c1ccccc1)C1CC2C=CC1C2-expected458)
        • PASSED [ 83%]
      • 0 ms
        passed(CN1C(=O)NC(=O)C(C)(C2=CCCCC2)C1=O-expected459)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(C)(C)NC(=O)[C@@H]1CN(Cc2cccnc2)CCN1C[C@@H](O)C[C@@H](Cc1ccccc1)C(=O)N[C@H]1c2ccccc2C[C@H]1O-expected460)
        • PASSED [ 83%]
      • 0 ms
        passed(FC(F)OC(Cl)C(F)(F)F-expected461)
        • PASSED [ 83%]
      • 0 ms
        passed(C=CCC1(C(C)C#CCC)C(=O)NC(=O)N(C)C1=O-expected462)
        • PASSED [ 83%]
      • 0 ms
        passed(COC(F)(F)C(Cl)Cl-expected463)
        • PASSED [ 83%]
      • 0 ms
        passed(CC1CCCC1-expected464)
        • PASSED [ 83%]
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1-expected465)
        • PASSED [ 83%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)nc21-expected466)
        • PASSED [ 83%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn(CCF)c3c2F)CC1-expected467)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected468)
        • PASSED [ 83%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CCCC1-expected469)
        • PASSED [ 83%]
      • 0 ms
        passed(COC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected470)
        • PASSED [ 83%]
      • 0 ms
        passed(O=C1CN=C(c2ccccn2)c2cc(Br)ccc2N1-expected471)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(C)(C)c1ccc(CN2CCN(C(c3ccccc3)c3ccc(Cl)cc3)CC2)cc1-expected472)
        • PASSED [ 83%]
      • 0 ms
        passed(CN(C)CCc1c[nH]c2ccc(O)cc12-expected473)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1-expected474)
        • PASSED [ 83%]
      • 0 ms
        passed(O=C(NCc1ccccc1)OCCO-expected475)
        • PASSED [ 83%]
      • 0 ms
        passed(CCC(C)C1(CC)C(=O)NC(=O)NC1=O-expected476)
        • PASSED [ 83%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2C)n(C)c1=O-expected477)
        • PASSED [ 83%]
      • 0 ms
        passed(C=C(C)[C@@H]1CCC(C)=CC1c1c(O)cc(CCCCC)cc1O-expected478)
        • PASSED [ 83%]
      • 0 ms
        passed(CCC(C)C(CC)C(=O)NC(N)=O-expected479)
        • PASSED [ 83%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C=Cc2ccccc21-expected480)
        • PASSED [ 83%]
      • 0 ms
        passed(CSc1ccc2c(c1)N(CCC1CCCNC1)c1ccccc1S2-expected481)
        • PASSED [ 83%]
      • 0 ms
        passed(Cn1c(=O)[nH]c2ncn(C)c2c1=O-expected482)
        • PASSED [ 83%]
      • 0 ms
        passed(CCCCC-expected483)
        • PASSED [ 83%]
      • 0 ms
        passed(CCCO-expected484)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(C)=O-expected485)
        • PASSED [ 83%]
      • 0 ms
        passed(CCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected486)
        • PASSED [ 83%]
      • 0 ms
        passed(CCCOC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected487)
        • PASSED [ 83%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCc2occc2[C@H]1CN1CC[C@@H](O)C1-expected488)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected489)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(C(F)(F)F)cc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected490)
        • PASSED [ 83%]
      • 0 ms
        passed(CSc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected491)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cc(F)cc(F)c2)[C@@H](CN2CC[C@@H](O)C2)C1-expected492)
        • PASSED [ 83%]
      • 0 ms
        passed(COc1cccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)c1-expected493)
        • PASSED [ 83%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc([N+](=O)[O-])cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected494)
        • PASSED [ 83%]
      • 0 ms
        passed(COc1ccc(CC(=O)N2CCN(C(C)=O)C[C@@H]2CN2CC[C@@H](O)C2)cc1-expected495)
        • PASSED [ 83%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected496)
        • PASSED [ 83%]
      • 0 ms
        passed(CCCCNc1c(C(=O)OCC)cnc2c1cnn2CC-expected497)
        • PASSED [ 83%]
      • 0 ms
        passed(Nn1cnc2cc3ccccc3cc2c1=O-expected498)
        • PASSED [ 83%]
      • 0 ms
        passed(OC(O)C(Cl)(Cl)Cl-expected499)
        • PASSED [ 83%]
      • 0 ms
        passed(CN=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected500)
        • PASSED [ 83%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2Sc2ccc(Cl)cc21-expected501)
        • PASSED [ 83%]
      • 0 ms
        passed(CN(C)CC/C=C1/c2ccccc2Sc2ccc(Cl)cc21-expected502)
        • PASSED [ 83%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2o1-expected503)
        • PASSED [ 83%]
      • 0 ms
        passed(C[N+](C)(C)CCO-expected504)
        • PASSED [ 83%]
      • 0 ms
        passed(CN1C(=O)CC(=O)N(c2ccccc2)c2cc(Cl)ccc21-expected505)
        • PASSED [ 83%]
      • 0 ms
        passed(O=C(O)CNC(=O)c1ccccc1O-expected506)
        • PASSED [ 83%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)(=O)=O)cc21-expected507)
        • PASSED [ 83%]
      • 0 ms
        passed(FC(Br)C(F)(F)F-expected508)
        • PASSED [ 83%]
      • 0 ms
        passed(Cn1cnc2c1c(=O)[nH]c(=O)n2C-expected509)
        • PASSED [ 84%]
      • 0 ms
        passed(CCCC(C)C1(CC)C(=O)NC(=S)NC1=O-expected510)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1ccccc1-expected511)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2-expected512)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2cccc([N+](=O)[O-])c2)[C@@H](CN2CC[C@H](O)C2)C1-expected513)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccccc2)[C@@H](CN2CC[C@@H](O)C2)C1-expected514)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(=O)N1CCN(C(=O)Cc2ccc(S(C)(=O)=O)cc2)[C@@H](CN2CC[C@H](O)C2)C1-expected515)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(C)[C@@H](CN1CCCC1)N(C)C(=O)Cc1ccc(Cl)c(Cl)c1-expected516)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)[C@@H](CN1CCCC1)c1ccccc1-expected517)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1cc(N/C(O)=C2\\C(=O)c3ccccc3S(=O)(=O)N2C)no1-expected518)
        • PASSED [ 84%]
      • 0 ms
        passed(C=CCN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected519)
        • PASSED [ 84%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNC(C)C3)c(F)c21-expected520)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C)C(=O)C(CCN1CCC(O)(c2ccc(Cl)cc2)CC1)(c1ccccc1)c1ccccc1-expected521)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccc(Cl)cc21-expected522)
        • PASSED [ 84%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2N1-expected523)
        • PASSED [ 84%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected524)
        • PASSED [ 84%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected525)
        • PASSED [ 84%]
      • 0 ms
        passed(COC(=O)[C@@H]1C2CCC(C[C@@H]1OC(=O)c1ccccc1)N2C-expected526)
        • PASSED [ 84%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected527)
        • PASSED [ 84%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CC1CC1-expected528)
        • PASSED [ 84%]
      • 0 ms
        passed(FC(F)(F)c1ccc2c(c1)N(CCCN1CCN(C3CC3)CC1)c1ccccc1S2-expected529)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C)CCO-expected530)
        • PASSED [ 84%]
      • 0 ms
        failed(CCOC(=O)C1(c2ccccc2)CCN(C)CC1_[Cl-]_[H+]-expected531)
        • FAILED [ 84%]
        • [14:08:26] WARNING: not removing hydrogen atom without neighbors
          [14:08:26] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]-expected531])
          array([[0]]) != array([1])
          test_input = 'CCOC(=O)C1(c2ccccc2)CCN(C)CC1.[Cl-].[H+]', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(ClC=C(Cl)Cl-expected532)
        • PASSED [ 84%]
      • 0 ms
        passed(ClC(Cl)Cl-expected533)
        • PASSED [ 84%]
      • 0 ms
        passed(CNCCc1ccccn1-expected534)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected535)
        • PASSED [ 84%]
      • 0 ms
        passed(NCCc1nccs1-expected536)
        • PASSED [ 84%]
      • 0 ms
        passed(NCCc1nc(-c2ccccc2)cs1-expected537)
        • PASSED [ 84%]
      • 0 ms
        passed(NCCc1cn2ccccc2n1-expected538)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1cccc(C)c1-expected539)
        • PASSED [ 84%]
      • 0 ms
        passed(CCOC(=O)N1CCC(=C2c3ccc(Cl)cc3CCc3cccnc32)CC1-expected540)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1cnc(N/C(O)=C2/C(=O)c3ccccc3S(=O)(=O)N2C)s1-expected541)
        • PASSED [ 84%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)C=C[C@H]3[C@H]1C5-expected542)
        • PASSED [ 84%]
      • 0 ms
        passed(O=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected543)
        • PASSED [ 84%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCNCC3)cc21-expected544)
        • PASSED [ 84%]
      • 0 ms
        passed(CCn1cc(C(=O)O)c(=O)c2cc(F)c(N3CCN(C)CC3)cc21-expected545)
        • PASSED [ 84%]
      • 0 ms
        passed(CN1/C(=C(/O)Nc2ccccn2)C(=O)c2ccccc2S1(=O)=O-expected546)
        • PASSED [ 84%]
      • 0 ms
        passed(CS(=O)(=O)O_Oc1ccc2[nH]cc(CCCCN3CC=C(c4ccccc4)CC3)c2c1-expected547)
        • PASSED [ 84%]
      • 0 ms
        passed(COC(=O)[C@H]1[C@H]2C[C@@H]3c4[nH]c5ccccc5c4CCN3C[C@H]2C[C@@H](OC(=O)c2cc(OC)c(OC)c(OC)c2)[C@@H]1OC-expected548)
        • PASSED [ 84%]
      • 0 ms
        passed(CNCCCN1c2ccccc2CCc2ccccc21-expected549)
        • PASSED [ 84%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected550)
        • PASSED [ 84%]
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1[C@@H](O)CC[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected551)
        • PASSED [ 84%]
      • 0 ms
        passed(CN1CCC23c4c5ccc(O)c4OC2C(O)CCC3C1C5-expected552)
        • PASSED [ 84%]
      • 0 ms
        passed(CN(C)CCOC(c1ccccc1)c1ccccc1-expected553)
        • PASSED [ 84%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected554)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(CN1CCN(CCOCCO)CC1)CN1c2ccccc2Sc2ccccc21-expected555)
        • PASSED [ 84%]
      • 0 ms
        passed(COC(=O)c1ccc(C(=O)OC)cc1-expected556)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1ccccc1C-expected557)
        • PASSED [ 84%]
      • 0 ms
        passed(Cc1ccc(C)cc1-expected558)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(C)O-expected559)
        • PASSED [ 84%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2C2OC2c2ccccc21-expected560)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(C)(C)OC(=O)CCCc1ccc(N(CCCl)CCCl)cc1-expected561)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(C)Nc1cccnc1N1CCN(C(=O)c2cc3cc(NS(C)(=O)=O)ccc3[nH]2)CC1-expected562)
        • PASSED [ 84%]
      • 0 ms
        passed(CC(C)(C)c1ccc(C(=O)CCCN2CCC(OC(c3ccccc3)c3ccccc3)CC2)cc1-expected563)
        • PASSED [ 84%]
      • 0 ms
        passed(CN1CCN(CC(=O)N2c3ccccc3C(=O)Nc3cccnc32)CC1-expected564)
        • PASSED [ 84%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@@H](C)CN1CCCC1)c1ccccc1S2-expected565)
        • PASSED [ 84%]
      • 0 ms
        passed(CN1CCN(c2c(F)cc3c(=O)c(C(=O)O)cn4c3c2SCC4)CC1-expected566)
        • PASSED [ 85%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(CO)c1-expected567)
        • PASSED [ 85%]
      • 0 ms
        passed(CN1CCN(C(=O)Cc2ccc(Cl)c(Cl)c2)[C@@H](CN2CCCC2)C1-expected568)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CCCC1-expected569)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ccnc2[C@H]1CN1CC[C@@H](O)C1-expected570)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCn2ncnc2[C@H]1CN1CCCC1-expected571)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(Cc1ccc(Cl)c(Cl)c1)N1CCN(CCO)C[C@@H]1CN1CC[C@@H](O)C1-expected572)
        • PASSED [ 85%]
      • 1 ms
        failed(CN(C)CC/C=C1/c2ccccc2COc2ccccc21_[Cl-]_[H+]-expected573)
        • FAILED [ 85%]
        • [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CN(C)CC/C=C1/c2ccccc2COc2ccccc21.[Cl-].[H+]-expected573])
          array([[0]]) != array([1])
          test_input = 'CN(C)CC/C=C1/c2ccccc2COc2ccccc21.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CN(C)CCOC(C)(c1ccccc1)c1ccccn1_O=C(O)CCC(=O)O-expected574)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(CCCN1CC=C(n2c(=O)[nH]c3ccccc32)CC1)c1ccc(F)cc1-expected575)
        • PASSED [ 85%]
      • 0 ms
        passed(C/C=C(\\CC)C(=O)NC(N)=O-expected576)
        • PASSED [ 85%]
      • 0 ms
        passed(CCC(C)(CC)OC(N)=O-expected577)
        • PASSED [ 85%]
      • 0 ms
        passed(Clc1ccc2c(c1)C(c1ccccc1)=NCc1nncn1-2-expected578)
        • PASSED [ 85%]
      • 0 ms
        passed(CCc1ccccc1-n1c(C)nc2ccccc2c1=O-expected579)
        • PASSED [ 85%]
      • 0 ms
        passed(CCOC(=O)c1cnc2c(cnn2CC)c1NN=C(C)C-expected580)
        • PASSED [ 85%]
      • 0 ms
        passed(C#CC(O)(/C=C/Cl)CC-expected581)
        • PASSED [ 85%]
      • 0 ms
        passed(C#CC1(OC(N)=O)CCCCC1-expected582)
        • PASSED [ 85%]
      • 0 ms
        passed(CNCCc1ccccn1-expected583)
        • PASSED [ 85%]
      • 0 ms
        passed(CN(C)CCc1ccccn1-expected584)
        • PASSED [ 85%]
      • 0 ms
        passed(NCCc1nccs1-expected585)
        • PASSED [ 85%]
      • 0 ms
        passed(S=C(NC1CCCCC1)N1CCC(c2c[nH]cn2)CC1-expected586)
        • PASSED [ 85%]
      • 1 ms
        passed(CC[C@H](NC(=O)c1c(O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected587)
        • PASSED [ 85%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCN(C)C)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected588)
        • PASSED [ 85%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected589)
        • PASSED [ 85%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCCC(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected590)
        • PASSED [ 85%]
      • 1 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccc2C(=O)O)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected591)
        • PASSED [ 85%]
      • 0 ms
        passed(CC[C@H](NC(=O)c1c(OCCNC(=O)Cc2ccccn2)c(-c2ccccc2)nc2ccccc12)c1ccccc1-expected592)
        • PASSED [ 85%]
      • 0 ms
        passed(C[C@@H]1CN(c2c(F)c(N)c3c(=O)c(C(=O)O)cn(C4CC4)c3c2F)C[C@H](C)N1-expected593)
        • PASSED [ 85%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC1=O-expected594)
        • PASSED [ 85%]
      • 0 ms
        passed(CCc1ccc2c(c1)N(CC(C)CN(C)C)c1ccccc1S2-expected595)
        • PASSED [ 85%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected596)
        • PASSED [ 85%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected597)
        • PASSED [ 85%]
      • 0 ms
        passed(CCN(CC)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected598)
        • PASSED [ 85%]
      • 0 ms
        passed(COc1cc2c3c(c1O)C1(C=CC(=O)C=C1)CC3N(C)CC2-expected599)
        • PASSED [ 85%]
      • 0 ms
        passed(CCC1(c2ccccc2)CCC(=O)NC1=O-expected600)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected601)
        • PASSED [ 85%]
      • 0 ms
        passed(Cc1[nH]ccc2c1[nH]c1cc(=O)ccc12-expected602)
        • PASSED [ 85%]
      • 0 ms
        passed(Cc1nccc2c1[nH]c1ccccc12-expected603)
        • PASSED [ 85%]
      • 0 ms
        passed(O=[N+]([O-])c1cc[nH]c1NCCSCc1ccccn1-expected604)
        • PASSED [ 85%]
      • 0 ms
        passed(CCNCc1c(CSC)cnc(C)c1O-expected605)
        • PASSED [ 85%]
      • 0 ms
        passed(CN1/C(=C(\\O)Nc2ccccn2)C(=O)c2sccc2S1(=O)=O-expected606)
        • PASSED [ 85%]
      • 0 ms
        passed(CC(C)(C)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected607)
        • PASSED [ 85%]
      • 0 ms
        passed(CN(C(=O)Cc1ccc(Cl)c(Cl)c1)C1CCCC[C@H]1N1CCCC1-expected608)
        • PASSED [ 85%]
      • 0 ms
        passed(CC(=O)Oc1ccc2c3c1O[C@H]1[C@@H](OC(C)=O)C=C[C@H]4[C@@H](C2)N(C)CC[C@@]341-expected609)
        • PASSED [ 85%]
      • 0 ms
        passed(C#CCC1(OC(N)=O)CCCCC1-expected610)
        • PASSED [ 85%]
      • 1 ms
        failed(OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1_[Cl-]_[Cl-]_[H+]_[H+]-expected611)
        • FAILED [ 85%]
        • [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1.[Cl-].[Cl-].[H+].[H+]-expected611])
          array([[1]]) != array([3])
          test_input = 'OCCN1CCCN(CCCN2c3ccccc3Sc3cc(C(F)(F)F)ccc32)CC1.[Cl-].[Cl-].[H+].[H+]'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(COc1ccc2c3c1O[C@H]1C(=O)CC[C@H]4[C@@H](C2)N(C)CC[C@]314-expected612)
        • PASSED [ 85%]
      • 0 ms
        passed(CCC(O)(COC(N)=O)c1ccccc1-expected613)
        • PASSED [ 85%]
      • 0 ms
        passed(OCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected614)
        • PASSED [ 85%]
      • 0 ms
        passed(CN(C)CCCN1c2ccccc2CCc2ccccc21-expected615)
        • PASSED [ 85%]
      • 0 ms
        passed(CNC1(c2ccccc2Cl)CCCCC1=O-expected616)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2[nH]1-expected617)
        • PASSED [ 85%]
      • 0 ms
        passed(O=C(NCCCOc1cccc(CN2CCCCC2)c1)c1ccccc1-expected618)
        • PASSED [ 85%]
      • 0 ms
        passed(OCCCOc1cccc(CN2CCCCC2)c1-expected619)
        • PASSED [ 85%]
      • 0 ms
        passed(c1ccc(NCCCOc2cccc(CN3CCCCC3)c2)nc1-expected620)
        • PASSED [ 85%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nccs2)c1-expected621)
        • PASSED [ 85%]
      • 0 ms
        passed(c1cc(CN2CCCCC2)cc(OCCCNc2nc3ccccc3o2)c1-expected622)
        • PASSED [ 85%]
      • 0 ms
        passed(CN(C)Cc1ccc(CSCCNc2nc(=O)c(Cc3ccc4ccccc4c3)c[nH]2)o1-expected623)
        • PASSED [ 86%]
      • 0 ms
        passed(CN(C)c1cc(-c2n[nH]c(N)n2)ccn1-expected624)
        • PASSED [ 86%]
      • 0 ms
        passed(Cn1c(=O)c2nc[nH]c2n(C)c1=O-expected625)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(F)cc2)CC1)c1ccc(F)cc1-expected626)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CC[C@]23CCCC[C@H]2[C@H]1Cc1ccc(O)cc13-expected627)
        • PASSED [ 86%]
      • 0 ms
        passed(CCN(CC)CC(=O)Nc1c(C)cccc1C-expected628)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2C(c2ccccc2Cl)=NC1O-expected629)
        • PASSED [ 86%]
      • 0 ms
        passed(CC(C)N1CCC(N(C(=O)Cc2ccccc2)c2ccc(Cl)cc2)CC1-expected630)
        • PASSED [ 86%]
      • 0 ms
        passed(CN(C)CCOC(=O)COc1ccc(Cl)cc1-expected631)
        • PASSED [ 86%]
      • 0 ms
        passed(Cc1nc2ccccc2c(=O)n1-c1ccccc1Cl-expected632)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CCN=C(c2ccccc2)c2cc(Cl)ccc21-expected633)
        • PASSED [ 86%]
      • 0 ms
        passed(CCCC(C)(COC(N)=O)COC(N)=O-expected634)
        • PASSED [ 86%]
      • 0 ms
        passed(NCCn1ncc2cc(Cl)c(Cl)cc21-expected635)
        • PASSED [ 86%]
      • 0 ms
        passed(Nc1nc(NC2CC2)c2ncn([C@H]3C=C[C@@H](CO)C3)c2n1-expected636)
        • PASSED [ 86%]
      • 0 ms
        passed(CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(C(C)=O)c1-expected637)
        • PASSED [ 86%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected638)
        • PASSED [ 86%]
      • 0 ms
        passed(CCCSc1ccc2nc(NC(=O)OC)[nH]c2c1-expected639)
        • PASSED [ 86%]
      • 0 ms
        passed(NCCCNCCSP(=O)(O)O-expected640)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1cc(CCN)cc(OC)c1OC-expected641)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CCCCC1CCN1c2ccccc2Sc2ccc(S(C)=O)cc21-expected642)
        • PASSED [ 86%]
      • 0 ms
        passed(CN[C@@H](C)Cc1ccccc1-expected643)
        • PASSED [ 86%]
      • 0 ms
        passed(Cc1ccccc1-n1c(C)nc2ccccc2c1=O-expected644)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1ccccc1OCC(O)COC(N)=O-expected645)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1ccc2c(c1)N(CCCN(C)C)c1ccccc1S2-expected646)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1ccc2c(c1)N(C[C@H](C)CN(C)C)c1ccccc1S2-expected647)
        • PASSED [ 86%]
      • 0 ms
        passed(C#CC(C)(O)CC-expected648)
        • PASSED [ 86%]
      • 0 ms
        passed(COC(=O)C(c1ccccc1)C1CCCCN1-expected649)
        • PASSED [ 86%]
      • 0 ms
        passed(CCC1(CC)C(=O)NCC(C)C1=O-expected650)
        • PASSED [ 86%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)[C@@H](O)[C@H](O)[C@H]2O)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected651)
        • PASSED [ 86%]
      • 0 ms
        passed(Nc1ccc(C(=O)O)c(O)c1-expected652)
        • PASSED [ 86%]
      • 0 ms
        passed(Nc1ccn([C@@H]2O[C@H](CO)[C@@H](O)[C@@H]2O)c(=O)n1-expected653)
        • PASSED [ 86%]
      • 0 ms
        passed(CN(C)N/N=C1/N=CN=C1C(N)=O-expected654)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(C)=O)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O)[C@H](C)O1-expected655)
        • PASSED [ 86%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@H](O)[C@H]3C[C@@H]12-expected656)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C1CC(=O)N(c2ccccc2)c2cc(Cl)ccc2N1-expected657)
        • PASSED [ 86%]
      • 0 ms
        passed(CNCCCN1c2ccccc2Sc2ccccc21-expected658)
        • PASSED [ 86%]
      • 0 ms
        passed(C[C@@H](CN1CC(=O)NC(=O)C1)N1CC(=O)NC(=O)C1-expected659)
        • PASSED [ 86%]
      • 0 ms
        passed(Cc1ncc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2_O=C(O)/C=C\\C(=O)O-expected660)
        • PASSED [ 86%]
      • 0 ms
        passed(Cc1ccc(C2(O)CCN(CCCC(=O)c3ccc(F)cc3)CC2)cc1-expected661)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(O)C=C[C@H]3[C@H]1C5-expected662)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CC=C(c2ccccc2)CC1-expected663)
        • PASSED [ 86%]
      • 0 ms
        passed(C=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected664)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1CCC[C@H]1c1cccnc1-expected665)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc2N1-expected666)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1-expected667)
        • PASSED [ 86%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2CCc2ccccc21-expected668)
        • PASSED [ 86%]
      • 0 ms
        passed(Cc1ccccc1C(OCCN(C)C)c1ccccc1-expected669)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1ccc2c(c1)[C@]13CCCC[C@@H]1[C@H](C2)N(C)CC3-expected670)
        • PASSED [ 86%]
      • 0 ms
        passed(CN1C[C@H](C(=O)N[C@]2(C)O[C@@]3(O)[C@@H]4CCCN4C(=O)[C@H](Cc4ccccc4)N3C2=O)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected671)
        • PASSED [ 86%]
      • 0 ms
        passed(CCN(CC)C(=S)SSC(=S)N(CC)CC-expected672)
        • PASSED [ 86%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)cc2[C@@](C#CC2CC2)(C(F)(F)F)O1-expected673)
        • PASSED [ 86%]
      • 0 ms
        passed(CCOC(=O)[C@H](CCc1ccccc1)N[C@@H](C)C(=O)N1CCC[C@H]1C(=O)O-expected674)
        • PASSED [ 86%]
      • 0 ms
        passed(CC[C@@H](CO)NCCN[C@@H](CC)CO-expected675)
        • PASSED [ 86%]
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](OC2CC(N(C)C)C(OC3CC(O)C(OC4CCC(=O)C(C)O4)C(C)O3)C(C)O2)c2c(cc3c(c2O)C(=O)c2c(O)cccc2C3=O)[C@H]1C(=O)OC-expected676)
        • PASSED [ 86%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)CCC[C@@H](N)C(=O)O)C(=O)N2[C@H]1C(=O)O-expected677)
        • PASSED [ 86%]
      • 0 ms
        passed(CNCC(O)c1ccc(O)c(O)c1-expected678)
        • PASSED [ 86%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)CC(O)(C(=O)CO)CC3O-expected679)
        • PASSED [ 87%]
      • 0 ms
        passed(C=CCSCC(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)[O-]_[Na+]-expected680)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C34C[C@@H]5C[C@@H](CC(N)(C5)C3)C4)C(=O)N2[C@H]1C(=O)O-expected681)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(C)(C)C(=O)OCOC(=O)C1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected682)
        • PASSED [ 87%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(ccc(N)c4O)C[C@H]3C[C@@H]12-expected683)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1(C)S[C@@H]2C(NC(=O)[C@H](NC(=O)c3c[nH]c4cccnc4c3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected684)
        • PASSED [ 87%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NC(C(=O)O)N2CCN(CCO)CC2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected685)
        • PASSED [ 87%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O[C@H]2O[C@H](CO)[C@@H](N)[C@H](O)[C@H]2O)O[C@H]2C[C@@H](N)[C@H](O[C@H]3[C@H](O)[C@@H](O)[C@H](N)C[C@@H]3N)O[C@@H]2[C@@H]1O-expected686)
        • PASSED [ 87%]
      • 0 ms
        passed(NCC[C@H](O)C(=O)N[C@@H]1C[C@H](N)[C@@H](O[C@H]2O[C@H](CN)CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1O[C@H](CO)[C@@H](O)[C@H](N)[C@H]1O-expected687)
        • PASSED [ 87%]
      • 0 ms
        passed(CNC(=O)C[C@@H](N)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(O)cc1-expected688)
        • PASSED [ 87%]
      • 0 ms
        passed(CO[C@H]1[C@@H](O)[C@H](N)[C@@H](O[C@H]2O[C@H](C(C)N)CC[C@H]2N)[C@H](O)[C@@H]1N(C)C(=O)CN-expected689)
        • PASSED [ 87%]
      • 0 ms
        failed(C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690)
        • FAILED [ 87%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]-expected690])
          array([[3]]) != array([4])
          test_input = 'C[C@H]1[C@H](NC(=O)/C(=N\\OC(C)(C)C(=O)O)c2csc([NH3+])n2)C(=O)N1S(=O)(=O)[O-]'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CCOC(=O)OC(C)OC(=O)[C@@H]1N2C(=O)[C@@H](N=CN3CCCCCC3)[C@H]2SC1(C)C-expected691)
        • PASSED [ 87%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected692)
        • PASSED [ 87%]
      • 0 ms
        passed(NC(CO)C(=O)NNCc1ccc(O)c(O)c1O-expected693)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(C)COCC(CN(Cc1ccccc1)c1ccccc1)N1CCCC1-expected694)
        • PASSED [ 87%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@H]1C-expected695)
        • PASSED [ 87%]
      • 0 ms
        passed(NCCC(O)CNC1CC(N)C(OC2OC(CN)C(O)C(O)C2O)C(O)C1OC1OC(CO)C(O)C(N)C1O-expected696)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccc(O)c(NC(N)=O)c1-expected697)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected698)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(C(=O)Oc3ccc4c(c3)CCC4)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected699)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(O)cccc1C3=O-expected700)
        • PASSED [ 87%]
      • 0 ms
        passed(NC(=O)OCC1[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1S(=O)(=O)O-expected701)
        • PASSED [ 87%]
      • 0 ms
        passed(N[C@@H](C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cl)CS[C@H]12)c1ccccc1-expected702)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1-expected703)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1-expected704)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccccc3)[C@H]2SC1-expected705)
        • PASSED [ 87%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)C(N)c4ccc(O)cc4)[C@H]3SC2)s1-expected706)
        • PASSED [ 87%]
      • 0 ms
        passed(NC(C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cn[nH]n3)CS[C@H]12)c1ccc(O)cc1-expected707)
        • PASSED [ 87%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)CSC(F)(F)F)[C@H]2SC1_[Na+]-expected708)
        • PASSED [ 87%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)Cn4cc(Cl)c(=O)c(Cl)c4)[C@H]3SC2)s1-expected709)
        • PASSED [ 87%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)O)N3C(=O)[C@@H](NC(=O)[C@H](O)c4ccccc4)[C@H]3SC2)s1-expected710)
        • PASSED [ 87%]
      • 0 ms
        passed(Cc1nnc(SCC2=C(C(=O)OCc3oc(=O)oc3C)N3C(=O)C(NC(=O)C(OC(=O)C(C)N)c4ccccc4)C3SC2)s1-expected711)
        • PASSED [ 87%]
      • 0 ms
        passed(CC/C=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(N)=O)CS[C@H]12)c1csc(N)n1-expected712)
        • PASSED [ 87%]
      • 0 ms
        passed(COCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected713)
        • PASSED [ 87%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\O)c3csc(N)n3)[C@H]2SC1-expected714)
        • PASSED [ 87%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N2C(C(=O)O)=C(/C=C\\c3scnc3C)CS[C@H]12)c1csc(N)n1-expected715)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)c(Cl)c3)[C@H]2SC1-expected716)
        • PASSED [ 87%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(C)CS[C@H]12)c1csc(N)n1-expected717)
        • PASSED [ 87%]
      • 0 ms
        passed(O=C(Cc1cccs1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3ncn[nH]3)CS[C@H]12-expected718)
        • PASSED [ 87%]
      • 0 ms
        passed(Cn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CS/C=C\\C#N)[C@H]2SC1-expected719)
        • PASSED [ 87%]
      • 0 ms
        passed(C=CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)/C(=N\\OCC(=O)O)c3csc(N)n3)[C@H]2SC1-expected720)
        • PASSED [ 87%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@H]12)c1csc(N)n1-expected721)
        • PASSED [ 87%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSCC#N)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected722)
        • PASSED [ 87%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC[C@@H](N)C(=O)O)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected723)
        • PASSED [ 87%]
      • 0 ms
        passed(CO/N=C(/C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nc(C)c(CC(=O)O)s3)CS[C@H]12)c1csc(N)n1-expected724)
        • PASSED [ 87%]
      • 0 ms
        passed(O=C(O)C1=C(CSc2nnnn2CS(=O)(=O)O)CS[C@@H]2[C@H](NC(=O)C(O)c3ccccc3)C(=O)N12-expected725)
        • PASSED [ 87%]
      • 0 ms
        passed(NCc1ccccc1CC(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nnnn3CC(=O)O)CS[C@H]12-expected726)
        • PASSED [ 87%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C2SC(=C(C(N)=O)C(=O)O)S2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CS[C@@H]21-expected727)
        • PASSED [ 87%]
      • 0 ms
        passed(CN(C)CCn1nnnc1SCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3csc(N)n3)[C@H]2SC1-expected728)
        • PASSED [ 87%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)c3c(-c4ccccc4Cl)noc3C)[C@H]2SC1-expected729)
        • PASSED [ 87%]
      • 0 ms
        passed(Cc1cc(=O)c(C(=O)N[C@@H](C(=O)NC2C(=O)N3C(C(=O)O)=C(CSc4nnnn4C)CS[C@H]23)c2ccc(O)cc2)c[nH]1-expected730)
        • PASSED [ 87%]
      • 0 ms
        passed(COCC1=C(C(=O)[O-])N2C(=O)[C@@H](NC(=O)/C(=N\\OC)c3csc(N)n3)[C@H]2SC1_[Na+]-expected731)
        • PASSED [ 87%]
      • 1 ms
        failed(C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1_O-expected732)
        • FAILED [ 87%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1.O-expected732])
          array([[4]]) != array([5])
          test_input = 'C/C=C/C1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccc(O)cc3)[C@H]2SC1.O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)[C@H]2SC1-expected733)
        • PASSED [ 87%]
      • 0 ms
        passed(COC1=C(C(=O)O)N2C(=O)C(NC(=O)C(N)C3C=CCC=C3)C2SC1-expected734)
        • PASSED [ 87%]
      • 0 ms
        passed(CC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3cccc(NS(C)(=O)=O)c3)[C@H]2SC1-expected735)
        • PASSED [ 87%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(Cn3nnc(C)n3)CS[C@H]12)c1csc(N)n1-expected736)
        • PASSED [ 88%]
      • 0 ms
        passed(O=C(Cn1cnnn1)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3nncs3)CS[C@H]12-expected737)
        • PASSED [ 88%]
      • 1 ms
        failed(Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1_O_O-expected738)
        • FAILED [ 88%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1.O.O-expected738])
          array([[4]]) != array([6])
          test_input = 'Nc1nc(/C(=C/CC(=O)O)C(=O)N[C@@H]2C(=O)N3C(C(=O)O)=CCS[C@H]23)cs1.O.O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[4]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[4]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSC(=O)c3ccco3)CS[C@H]12)c1csc(N)n1-expected739)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(/C=C/Sc3n[nH]c(=O)c(=O)n3CC=O)CS[C@H]12)c1csc(N)n1-expected740)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS(=O)[C@H]12)c1csc(N)n1-expected741)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=CCS[C@H]12)c1csc(N)n1-expected742)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(COC(C)=O)CS[C@H]12)c1ccco1-expected743)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)OC(C)OC(C)=O)=C(COC(N)=O)CS[C@H]12)c1ccco1-expected744)
        • PASSED [ 88%]
      • 0 ms
        passed(COCCCC(=O)OC(C)OC(=O)C1=C(COC(N)=O)CS[C@@H]2[C@H](NC(=O)/C(=N\\OC)c3ccco3)C(=O)N12-expected745)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N2C(C(=O)O)=C(CSc3cnns3)CS[C@H]12)c1csc(N)n1-expected746)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)[O-])N2C(=O)[C@H](NC(=O)CC#N)[C@@H]2SC1_[Na+]-expected747)
        • PASSED [ 88%]
      • 1 ms
        failed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1_O_O-expected748)
        • FAILED [ 88%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O-expected748])
          array([[3]]) != array([5])
          test_input = 'CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1.O.O'
          expected = array([5.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([5])
          E Full diff:
          E - array([5])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)CCC[C@@H](N)C(=O)O)[C@H]2SC1-expected749)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(=O)OCC1=C(C(=O)O)N2C(=O)[C@@H](NC(=O)Cc3cccs3)[C@H]2SC1-expected750)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(=O)C1=C(O)[C@@]2(O)C(=O)c3c(c(C)c4ccc(C)c(O)c4c3O)C[C@H]2[C@@H](N)C1=O-expected751)
        • PASSED [ 88%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(OC)C[C@@H](C)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected752)
        • PASSED [ 88%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](O)[C@@H](O)[C@H]2O)N(C)C1-expected753)
        • PASSED [ 88%]
      • 0 ms
        passed(CCC[C@@H]1C[C@@H](C(=O)NC(C(C)Cl)[C@H]2O[C@H](SC)[C@H](OP(=O)(O)O)[C@@H](O)[C@H]2O)N(C)C1-expected754)
        • PASSED [ 88%]
      • 0 ms
        passed(COC(C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccc(Cl)c(Cl)c1-expected755)
        • PASSED [ 88%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCO)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12-expected756)
        • PASSED [ 88%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C3(N)CCCCC3)C(=O)N2[C@H]1C(=O)O-expected757)
        • PASSED [ 88%]
      • 1 ms
        passed(CC=CCC(C)C(O)C1C(=O)NC(CC)C(=O)N(C)CC(=O)N(C)C(CC(C)C)C(=O)NC(C(C)C)C(=O)N(C)C(CC(C)C)C(=O)NC(C)C(=O)NC(C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(CC(C)C)C(=O)N(C)C(C(C)C)C(=O)N1C-expected758)
        • PASSED [ 88%]
      • 1 ms
        passed(Cc1c2oc3c(C)ccc(C(=O)NC4C(=O)NC(C(C)C)C(=O)N5CCCC5C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC4C)c3nc-2c(C(=O)NC2C(=O)NC(C(C)C)C(=O)N3CCCC3C(=O)N(C)CC(=O)N(C)C(C(C)C)C(=O)OC2C)c(N)c1=O-expected759)
        • PASSED [ 88%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@H](O)[C@H]3C[C@@H]12-expected760)
        • PASSED [ 88%]
      • 0 ms
        passed(CCOC(OCC)C(=O)OCC(=O)C1(O)Cc2c(O)c3c(c(O)c2C(OC2CC(N)C(O)C(C)O2)C1)C(=O)c1c(OC)cccc1C3=O-expected761)
        • PASSED [ 88%]
      • 0 ms
        passed(NCC1CCC(N)C(OC2C(N)CC(N)C(OC3OC(CO)C(O)C(N)C3O)C2O)O1-expected762)
        • PASSED [ 88%]
      • 0 ms
        passed(Cc1onc(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected763)
        • PASSED [ 88%]
      • 0 ms
        passed(CN[C@@H]1[C@H](O[C@H]2[C@H](O[C@@H]3[C@@H](O)[C@H](O)[C@@H](N=C(N)N)[C@H](O)[C@H]3N=C(N)N)O[C@@H](C)[C@]2(O)CO)O[C@@H](CO)[C@H](O)[C@H]1O-expected764)
        • PASSED [ 88%]
      • 1 ms
        passed(COc1ccc(-c2cc(=O)c3c(O)cc(O[C@@H]4O[C@H](CO[C@@H]5O[C@@H](C)[C@H](O)[C@@H](O)[C@H]5O)[C@@H](O)[C@H](O)[C@H]4O)cc3o2)cc1O-expected765)
        • PASSED [ 88%]
      • 0 ms
        passed(CNCC(O)c1ccc(OC(=O)C(C)(C)C)c(OC(=O)C(C)(C)C)c1-expected766)
        • PASSED [ 88%]
      • 0 ms
        passed(CCC(=O)O[C@H]1[C@H](C)O[C@@H](O[C@@H]2C(C)C(=O)O[C@H](C)[C@H](C)[C@H](OC(=O)CC)[C@@H](C)C(=O)[C@]3(CO3)CC(C)[C@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3O)[C@H]2C)C[C@@H]1OC-expected767)
        • PASSED [ 88%]
      • 0 ms
        passed(OCCN(CCO)c1nc(N2CCCCC2)c2nc(N(CCO)CCO)nc(N3CCCCC3)c2n1-expected768)
        • PASSED [ 88%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)[C@@H]2N[C@@H](COCCOC)O[C@H]([C@H]2C)[C@]1(C)O-expected769)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(=O)O[C@@]12CO[C@@H]1C[C@H](O)[C@@]1(C)C(=O)[C@H](O)C3=C(C)[C@@H](OC(=O)[C@H](O)[C@@H](NC(=O)OC(C)(C)C)c4ccccc4)C[C@@](O)([C@@H](OC(=O)c4ccccc4)[C@H]21)C3(C)C-expected770)
        • PASSED [ 88%]
      • 1 ms
        passed(C/C=C/C=C/C1OC(O)(C(CC)C(=O)NC/C=C/C=C(\\C)C(OC)C(C)C2OC(/C=C/C=C/C=C(\\C)C(=O)c3c(O)n(C)ccc3=O)C(O)C2O)C(O)C(OC2OC(C)C(OC3OC(C)C(OC)C(O)C3OC)C(OC)C2O)C1(C)C-expected771)
        • PASSED [ 88%]
      • 1 ms
        failed(CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21_[Cl]-expected772)
        • FAILED [ 88%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21.[Cl]-expected772])
          array([[1]]) != array([2])
          test_input = 'CC[C@H]1CN2CCc3cc(OC)c(OC)cc3[C@@H]2C[C@@H]1C[C@H]1NCCc2cc(OC)c(OC)cc21.[Cl]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)C3=CCC=CC3)C(=O)N2[C@H]1C(=O)O-expected773)
        • PASSED [ 88%]
      • 2 ms
        passed(CCC(C)[C@H]1O[C@]2(CC[C@@H]1C)CC1C[C@@H](C/C=C(\\C)[C@@H](O[C@H]3C[C@H](OC)[C@@H](OC4C[C@H](OC)[C@@H](O)[C@H](C)O4)[C@H](C)O3)[C@@H](C)/C=C/C=C3\\CO[C@@H]4[C@H](O)C(C)=C[C@@H](C(=O)O1)[C@]34O)O2_CO[C@H]1CC(O[C@H]2[C@H](C)O[C@@H](O[C@@H]3/C(C)=C/C[C@@H]4CC(C[C@]5(CC[C@H](C)[C@@H](C(C)C)O5)O4)OC(=O)[C@@H]4C=C(C)[C@@H](O)[C@H]5OC/C(=C\\C=C\\[C@@H]3C)[C@]54O)C[C@@H]2OC)O[C@@H](C)[C@@H]1O-expected774)
        • PASSED [ 88%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@](O)(C(=O)CO)C[C@H]3OC1CC(N)CC(C)O1-expected775)
        • PASSED [ 88%]
      • 1 ms
        passed(CN(CCN(C)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O)CN/C(O)=C1\\C(=O)[C@@H](N(C)C)[C@@H]2C[C@H]3C(=C(O)c4c(O)cccc4[C@@]3(C)O)C(=O)[C@]2(O)C1=O-expected776)
        • PASSED [ 88%]
      • 0 ms
        passed(CCNCC(O)c1cccc(O)c1-expected777)
        • PASSED [ 88%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc(Cl)c1Cl-expected778)
        • PASSED [ 88%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(Oc3ccccc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected779)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(C)c1ccccc1OCC1=NCCN1-expected780)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(C)(C(=O)O)c1ccc(C(O)CCCN2CCC(C(O)(c3ccccc3)c3ccccc3)CC2)cc1-expected781)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(C)(Oc1ccc(Cl)cc1)C(=O)N[C@@H](C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O)c1ccccc1-expected782)
        • PASSED [ 88%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)CSC(F)(F)F)C(=O)N2C(C(=O)O)=C(CSc3nnnn3CCO)CO[C@@H]21_[Na]-expected783)
        • PASSED [ 88%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@](C)(F)C(=O)[C@H](C)[C@@H](O)[C@]1(C)O-expected784)
        • PASSED [ 88%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C([C@H]3CCCO3)S[C@H]12-expected785)
        • PASSED [ 88%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@@H](N=Cc3ccco3)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected786)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(C)CC(OC(=O)c1ccco1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected787)
        • PASSED [ 88%]
      • 0 ms
        passed(CC(=O)O[C@H]1C[C@@]2(C)[C@@H](C[C@@H](O)[C@H]3[C@@]4(C)CC[C@@H](O)[C@@H](C)[C@@H]4CC[C@@]32C)/C1=C(\\CCC=C(C)C)C(=O)O-expected788)
        • PASSED [ 88%]
      • 0 ms
        passed(CNC(C)C1CCC(N)C(OC2C(N)CC(N)C(OC3OCC(C)(O)C(NC)C3O)C2O)O1-expected789)
        • PASSED [ 88%]
      • 0 ms
        passed(CO/N=C(\\C(=O)N[C@@H]1C(=O)N(OCC(=O)OCC(=O)OC(C)(C)C)[C@H]1C)c1csc(N)n1-expected790)
        • PASSED [ 88%]
      • 1 ms
        passed(CC(C)CC1NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC(=O)C(CC(C)C)NC(=O)C(CCCN)NC(=O)C(C(C)C)NC(=O)C2CCCN2C(=O)C(Cc2ccccc2)NC1=O-expected791)
        • PASSED [ 88%]
      • 0 ms
        passed(Cc1c(F)c(N2CCNC(C)C2)cc2c1c(=O)c(C(=O)O)cn2C1CC1-expected792)
        • PASSED [ 89%]
      • 0 ms
        passed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(C(=N)N=C(N)N)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected793)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N3C(=O)[C@@H](c4ccccc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected794)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(Cc1ccccc1)NO-expected795)
        • PASSED [ 89%]
      • 0 ms
        passed(CNC(C)C(O)c1ccc(O)cc1-expected796)
        • PASSED [ 89%]
      • 0 ms
        passed(Cc1cc(=O)oc2cc(O)ccc12-expected797)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(=O)[C@]1(O)Cc2c(O)c3c(c(O)c2[C@@H](O[C@H]2C[C@H](N)[C@H](O)[C@H](C)O2)C1)C(=O)c1ccccc1C3=O-expected798)
        • PASSED [ 89%]
      • 1 ms
        failed(C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12_O-expected799)
        • FAILED [ 89%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12.O-expected799])
          array([[3]]) != array([4])
          test_input = 'C[C@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SCCN=CN)C[C@H]12.O'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CNC1C(O)C(OC2C(NC(=O)C(O)CN)CC(N)C(OC3OC(CN)C(O)C(O)C3O)C2O)OCC1(C)O-expected800)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(C)(Oc1ccccc1)C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected801)
        • PASSED [ 89%]
      • 1 ms
        passed(CO[C@@H]1[C@@H](O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@@H](OC(=O)CC(C)C)[C@H](C)O3)[C@H](N(C)C)[C@H]2O)[C@@H](CC=O)C[C@@H](C)[C@@H](O)/C=C/C=C/C[C@@H](C)OC(=O)C[C@H]1OC(C)=O-expected802)
        • PASSED [ 89%]
      • 1 ms
        passed(Cc1oc(=O)oc1COC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected803)
        • PASSED [ 89%]
      • 0 ms
        passed(CNCC[C@@H](O)[C@@H]1C[C@H](SC2=C(C(=O)O)N3C(=O)[C@H]([C@@H](C)O)[C@H]3[C@H]2C)CN1-expected804)
        • PASSED [ 89%]
      • 0 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](NC(=O)[C@@H](N)CC(C)C)[C@H](O)[C@H](C)O1-expected805)
        • PASSED [ 89%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](OC2CC(C)(OC)C(O)C(C)O2)C(C)[C@@H](OC2OC(C)CC(N(C)C)C2O)[C@](C)(O)C[C@@H](C)/C(=N\\OC)[C@H](C)[C@@H](O)[C@]1(C)O-expected806)
        • PASSED [ 89%]
      • 0 ms
        passed(CCCC1CC(C(=O)NC(C(C)O)C2OC(SC)C(O)C(O)C2O)N(C)C1-expected807)
        • PASSED [ 89%]
      • 1 ms
        failed(N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1_O-expected808)
        • FAILED [ 89%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1.O-expected808])
          array([[3]]) != array([4])
          test_input = 'N[C@@H](C(=O)NC1C(=O)N2C(C(=O)O)=C(Cl)CCC12)c1ccccc1.O'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CCCCc1nc(Cl)c(CO)n1Cc1ccc(-c2ccccc2-c2nn[nH]n2)cc1-expected809)
        • PASSED [ 89%]
      • 1 ms
        failed(CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12_[Cl-]_[H+]-expected810)
        • FAILED [ 89%]
        • [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]-expected810])
          array([[6]]) != array([7])
          test_input = 'CN(C)[C@@H]1C(=O)/C(=C(/N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc(Cl)c4[C@@](C)(O)[C@H]3C[C@@H]12.[Cl-].[H+]'
          expected = array([7.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[6]]) == array([7])
          E Full diff:
          E - array([7])
          E ? ^
          E + array([[6]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](N=CN3CCCCCC3)C(=O)N2[C@H]1C(=O)O-expected811)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(CN(C)C)OC(C)(c1ccccc1)c1ccc(Cl)cc1-expected812)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1OC(OC2CC(O)(C(=O)CO)Cc3c(O)c4c(c(O)c32)C(=O)c2ccccc2C4=O)CC(N)C1O-expected813)
        • PASSED [ 89%]
      • 1 ms
        failed(C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12_O_O_O-expected814)
        • FAILED [ 89%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12.O.O.O-expected814])
          array([[3]]) != array([6])
          test_input = 'C[C@H](O)C1C(=O)N2C(C(=O)O)=C(S[C@@H]3CN[C@H](C(=O)N(C)C)C3)[C@H](C)C12.O.O.O'
          expected = array([6.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([6])
          E Full diff:
          E - array([6])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(C=NC(C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O)c1ccccc1-expected815)
        • PASSED [ 89%]
      • 0 ms
        passed(C=C1c2cccc(O)c2C(O)=C2C(=O)[C@]3(O)C(=O)/C(=C(/N)O)C(=O)[C@@H](N(C)C)[C@@H]3[C@@H](O)[C@H]12-expected816)
        • PASSED [ 89%]
      • 0 ms
        passed(CNC(C)C(=O)c1ccc(OC)cc1-expected817)
        • PASSED [ 89%]
      • 0 ms
        passed(COc1cccc(OC)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected818)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)N3CCN(S(C)(=O)=O)C3=O)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected819)
        • PASSED [ 89%]
      • 0 ms
        passed(COCC(=O)O[C@]1(CCN(C)CCCc2nc3ccccc3[nH]2)CCc2cc(F)ccc2[C@@H]1C(C)C-expected820)
        • PASSED [ 89%]
      • 1 ms
        passed(CCC(=O)OC1CC(=O)OC(C)C/C=C/C=C\\C(O)C(C)CC(CC=O)C(O[C@@H]2O[C@H](C)[C@@H](O[C@H]3C[C@@](C)(O)[C@H](OC(=O)CC)[C@@H](C)O3)[C@H](N(C)C)[C@H]2O)C1OC-expected821)
        • PASSED [ 89%]
      • 1 ms
        passed(CCC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected822)
        • PASSED [ 89%]
      • 0 ms
        passed(CCCCCC1CNC(C(=O)NC(C(C)Cl)C2OC(SC)C(O)C(O)C2O)C1-expected823)
        • PASSED [ 89%]
      • 0 ms
        passed(CO[C@@]12[C@H](COC(N)=O)C3=C(C(=O)C(C)=C(N)C3=O)N1C[C@@H]1N[C@@H]12-expected824)
        • PASSED [ 89%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccc(O)cc2)C(=O)N2C(C(=O)O)=C(CSc3nnnn3C)CO[C@@H]21-expected825)
        • PASSED [ 89%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O)[C@H](N)C[C@@H]2N)[C@H](N)[C@@H](O)[C@@H]1O-expected826)
        • PASSED [ 89%]
      • 0 ms
        passed(CCN[C@@H]1C[C@H](N)[C@@H](O[C@H]2OC(CN)=CC[C@H]2N)[C@H](O)[C@H]1O[C@H]1OC[C@](C)(O)[C@H](NC)[C@H]1O-expected827)
        • PASSED [ 89%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OCCN(C)Cc2ccccc2)C1c1cccc([N+](=O)[O-])c1-expected828)
        • PASSED [ 89%]
      • 0 ms
        passed(COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1ccccc1[N+](=O)[O-]-expected829)
        • PASSED [ 89%]
      • 0 ms
        passed(CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1c1cccc([N+](=O)[O-])c1-expected830)
        • PASSED [ 89%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(\\N)O)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)ccc([N+](=O)[O-])c4C[C@H]3C[C@@H]12-expected831)
        • PASSED [ 89%]
      • 0 ms
        passed(CO[C@@H]1[C@@H](OC(N)=O)[C@@H](O)[C@H](Oc2ccc3c(=O)c(NC(=O)c4ccc(O)c(CC=C(C)C)c4)c(O)oc3c2C)OC1(C)C-expected832)
        • PASSED [ 89%]
      • 0 ms
        passed(COC1CC(O[C@H]2[C@H](C)[C@@H](OC3OC(C)CC(N(C)C)C3O)[C@@H](C)C[C@]3(CO3)C(=O)[C@H](C)[C@@H](O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)OC(C)C1O-expected833)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H]([NH+]3C(=O)C(c4ccc(O)cc4)NC3(C)C)C(=O)N2[C@H]1C(=O)O-expected834)
        • PASSED [ 89%]
      • 0 ms
        passed(CO/N=C(\\C(=O)NC1C(=O)N(OCC(=O)O)[C@H]1C)c1csc(N)n1-expected835)
        • PASSED [ 89%]
      • 1 ms
        passed(CC(=O)O[C@H]1C(=O)[C@@]2(C)C([C@H](OC(=O)c3ccccc3)[C@]3(O)C[C@H](OC(=O)[C@H](O)[C@@H](NC(=O)c4ccccc4)c4ccccc4)C(C)=C1C3(C)C)[C@]1(OC(C)=O)CO[C@@H]1C[C@@H]2O-expected836)
        • PASSED [ 89%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCN2CCCC(C(=O)O)C2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected837)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(=O)OCOC(=O)C1N2C(=O)C(NC(=O)Cc3ccccc3)C2SC1(C)C-expected838)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)Cc3ccccc3)C(=O)N2C1C(=O)O_[Na]-expected839)
        • PASSED [ 89%]
      • 0 ms
        passed(CN(C)[C@@H]1C(=O)/C(=C(/O)NCNC(C(=O)NC2C(=O)N3C2SC(C)(C)C3C(=O)O)c2ccccc2)C(=O)[C@@]2(O)C(=O)C3=C(O)c4c(O)cccc4[C@@](C)(O)[C@H]3C[C@@H]12-expected840)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected841)
        • PASSED [ 89%]
      • 0 ms
        passed(CN(C)C1C(=O)/C(=C(/O)NCN2CCN(CCO)CC2)C(=O)C2(O)C(=O)C3=C(O)c4c(O)cccc4C(C)(O)C3CC12-expected842)
        • PASSED [ 89%]
      • 1 ms
        passed(COc1cccc2c1C(=O)c1c(O)c3c(c(O)c1C2=O)C[C@@](O)(C(=O)CO)C[C@@H]3O[C@H]1C[C@H](N)[C@H](O[C@H]2CCCCO2)[C@H](C)O1-expected843)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)SC2C(N(C(=N)c3ccncc3)[C@H](C(=O)NC(=O)CN)c3ccccc3)C(=O)N2C1C(=O)O-expected844)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)c3ccc(-c4ccc(S(=O)(=O)N(CCO)CCO)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]-expected845)
        • PASSED [ 89%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Nc3cnc(Nc4ccc(S(N)(=O)=O)cc4)[nH]c3=O)c3ccc(O)cc3)C(=O)N2[C@H]1C(=O)O-expected846)
        • PASSED [ 89%]
      • 0 ms
        passed(CC(C)(C)C(=O)OCOC(=O)[C@@H]1N2C(=O)[C@@H](NC(=O)[C@H](N)c3ccccc3)[C@H]2SC1(C)C-expected847)
        • PASSED [ 89%]
      • 0 ms
        passed(CNCC(O)c1cccc(OC(=O)C(C)(C)C)c1-expected848)
        • PASSED [ 89%]
      • 0 ms
        passed(Cc1cnn(-c2c(Cl)cccc2Cl)c1C(=O)N[C@@H]1C(=O)N2[C@@H]1SC(C)(C)[C@@H]2C(=O)O-expected849)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1NC(=O)C(NC(=O)c2ncccc2O)C(C)OC(=O)C(c2ccccc2)NC(=O)C2CC(=O)CCN2C(=O)C(Cc2ccc(N(C)C)cc2)N(C)C(=O)C2CCCN2C1=O-expected850)
        • PASSED [ 90%]
      • 0 ms
        passed(CCCNCC(O)COc1ccccc1C(=O)CCc1ccccc1-expected851)
        • PASSED [ 90%]
      • 0 ms
        passed(CCC(Oc1ccccc1)C(=O)NC1C(=O)N2C1SC(C)(C)C2C(=O)O-expected852)
        • PASSED [ 90%]
      • 0 ms
        passed(NCC1OC(OC2C(N)CC(NC(CO)CO)C(OC3OC(CO)C(O)C(N)C3O)C2O)C(N)C(O)C1O-expected853)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)c3nc4ccccc4nc3C(=O)O)C(=O)N2[C@H]1C(=O)O-expected854)
        • PASSED [ 90%]
      • 0 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C2=NC3(CCN(CC(C)C)CC3)NC2=C(NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C)C4=O-expected855)
        • PASSED [ 90%]
      • 1 ms
        passed(CCN(CC)C(C)=NN=Cc1c2c(O)c3c(O)c(C)c4c(c3c1O)C(=O)C(C)(OC=CC(OC)C(C)C(OC(C)=O)C(C)C(O)C(C)C(O)C(C)C=CC=C(C)C(=O)N2)O4-expected856)
        • PASSED [ 90%]
      • 0 ms
        passed(CCN(CC)c1nc2c(s1)c1c(O)c3c(O)c(C)c4c(c32)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N1)O4-expected857)
        • PASSED [ 90%]
      • 1 ms
        passed(CCN(CC)C(=O)COc1cc2c(O)c3c(O)c(C)c4c(c13)C(=O)[C@@](C)(O/C=C/[C@H](OC)[C@@H](C)[C@@H](OC(C)=O)[C@H](C)[C@H](O)[C@H](C)[C@@H](O)[C@@H](C)/C=C/C=C(/C)C(=O)N2)O4-expected858)
        • PASSED [ 90%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(cc(O)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected859)
        • PASSED [ 90%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(c3C2=O)C(=O)/C(=C/NN2CCN(C3CCCC3)CC2)C(=C4O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected860)
        • PASSED [ 90%]
      • 1 ms
        passed(CO[C@H]1/C=C/O[C@@]2(C)Oc3c(C)c(O)c4c(O)c(c5c(nc6cc(C)ccn65)c4c3C2=O)NC(=O)/C(C)=C\\C=C\\[C@H](C)[C@H](O)[C@@H](C)[C@@H](O)[C@@H](C)[C@H](OC(C)=O)[C@@H]1C-expected861)
        • PASSED [ 90%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)[O-])=C(COC(N)=O)S[C@H]12_[Na+]-expected862)
        • PASSED [ 90%]
      • 1 ms
        passed(CC[C@@]1(O)C[C@H](O[C@H]2C[C@H](N(C)C)[C@H](O[C@H]3C[C@@H]4O[C@H]5CC(=O)[C@H](C)O[C@H]5O[C@@H]4[C@H](C)O3)[C@H](C)O2)c2c(O)c3c(c(O)c2[C@H]1O[C@H]1C[C@H](N(C)C)[C@H](O)[C@H](C)O1)C(=O)c1cccc(O)c1C3=O-expected863)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NC(=O)Cc3ccc(C4=NCCCN4)cc3)c3ccccc3)C(=O)N2[C@H]1C(=O)O-expected864)
        • PASSED [ 90%]
      • 0 ms
        passed(CC[C@H]1OC(=O)[C@H](C)[C@@H](O[C@H]2C[C@@](C)(OC)[C@@H](O)[C@H](C)O2)[C@H](C)[C@@H](O[C@@H]2O[C@H](C)C[C@H](N(C)C)[C@H]2O)[C@](C)(O)C[C@@H](C)/C(=N/OCOCCOC)[C@H](C)[C@@H](O)[C@]1(C)O-expected865)
        • PASSED [ 90%]
      • 0 ms
        passed(COC1CCCC2C1=C(C(=O)[O-])N1C(=O)C(C(C)O)C21-expected866)
        • PASSED [ 90%]
      • 0 ms
        passed(COCOC(=O)C1N2C(=O)C(N3C(=O)C(c4ccc(O)cc4)NC3(C)C)C2SC1(C)C-expected867)
        • PASSED [ 90%]
      • 0 ms
        passed(COCOC(=O)[C@@H]1N2C(=O)[C@@H](N3C(=O)C(c4ccccc4)NC3(C)C)[C@H]2SC1(C)C-expected868)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)OC1/C=C/C(C)=C/CC(O)/C=C/C(C)=C/C(NC(=O)C(C)=O)C2(C)C(=O)OC(C1)C(C)C2=O-expected869)
        • PASSED [ 90%]
      • 0 ms
        passed(CN[C@@H]1[C@@H](O)[C@@H](O[C@@H]2[C@@H](O)[C@H](O[C@H]3OC(CN)=CC[C@H]3N)[C@@H](N)C[C@H]2N)OC[C@]1(C)O-expected870)
        • PASSED [ 90%]
      • 1 ms
        passed(COC1C(O)CC(=O)OC(C)C/C=C/C=C/C(OC2CCC(N(C)C)C(C)O2)C(C)CC(CC=O)C1OC1OC(C)C(OC2CC(C)(O)C(O)C(C)O2)C(N(C)C)C1O-expected871)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)C(c3ccccc3)S(=O)(=O)O)C(=O)N2[C@H]1C(=O)O-expected872)
        • PASSED [ 90%]
      • 0 ms
        passed(C[C@@H](O)[C@H]1C(=O)N2C(C(=O)O)=C(SC3CCS(=O)C3)S[C@H]12-expected873)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)O_CC1(C)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected874)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](NS(=O)(=O)[O-])c3ccccc3)C(=O)N2[C@H]1C(=O)[O-]_[Na+]_[Na+]-expected875)
        • PASSED [ 90%]
      • 0 ms
        passed(C=CC[C@@H]1/C=C(\\C)C[C@H](C)C[C@H](OC)[C@H]2O[C@@](O)(C(=O)C(=O)N3CCCC[C@H]3C(=O)O[C@H](/C(C)=C/[C@@H]3CC[C@@H](O)[C@H](OC)C3)[C@H](C)[C@@H](O)CC1=O)[C@H](C)C[C@@H]2OC-expected876)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)S[C@@H]2[C@H](NC(=O)[C@H](N)c3ccccc3)C(=O)N2[C@H]1C(=O)OC1OC(=O)c2ccccc21-expected877)
        • PASSED [ 90%]
      • 0 ms
        passed(C[C@]1(Cn2ccnn2)[C@H](C(=O)O)N2C(=O)C[C@H]2S1(=O)=O-expected878)
        • PASSED [ 90%]
      • 2 ms
        passed(CCCCCCCCCC(=O)N[C@H]1[C@H](Oc2c3cc4cc2Oc2ccc(cc2Cl)[C@@H](O[C@@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2NC(C)=O)[C@@H]2NC(=O)[C@H](NC(=O)[C@@H]4NC(=O)[C@H]4NC(=O)[C@@H](Cc5ccc(c(Cl)c5)O3)NC(=O)[C@H](N)c3ccc(O)c(c3)Oc3cc(O)cc4c3)c3ccc(O)c(c3)-c3c(O[C@H]4O[C@H](CO)[C@@H](O)[C@H](O)[C@@H]4O)cc(O)cc3[C@H](C(=O)O)NC2=O)O[C@H](CO)[C@@H](O)[C@@H]1O-expected879)
        • PASSED [ 90%]
      • 0 ms
        passed(CO[C@@]1(NC(=O)C(C(=O)O)c2ccsc2)C(=O)N2[C@@H](C(=O)O)C(C)(C)S[C@@H]21-expected880)
        • PASSED [ 90%]
      • 0 ms
        passed(Cn1c(=O)c2c(ncn2CCNCC(O)c2ccc(O)c(O)c2)n(C)c1=O-expected881)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)SC2C(NC(=O)CSc3ccccc3)C(=O)N2C1C(=O)O-expected882)
        • PASSED [ 90%]
      • 0 ms
        passed(CC1(C)[C@H](NC(=O)/C(=N\\OCC(=O)O)c2csc(N)n2)C(=O)N1OS(=O)(=O)O-expected883)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(C)C(=O)OCc1cccc(OC(=O)[C@@H]2N3C(=O)[C@@H](NC(=O)Cc4ccccc4)[C@H]3SC2(C)C)c1-expected884)
        • PASSED [ 90%]
      • 0 ms
        passed(NC[C@H]1O[C@H](O[C@H]2[C@H](O)[C@@H](O[C@H]3O[C@H](CO)[C@@H](O)[C@H](N)[C@H]3O)[C@H](N)C[C@@H]2N)[C@H](N)C[C@@H]1O-expected885)
        • PASSED [ 90%]
      • 0 ms
        passed(Cc1ccc(C(=O)c2cc(O)c(O)c([N+](=O)[O-])c2)cc1-expected886)
        • PASSED [ 90%]
      • 1 ms
        passed(CO[C@H]1C[C@H](O[C@H]2[C@H](C)[C@@H](O[C@@H]3O[C@H](C)C[C@H](N(C)C)[C@H]3OC(C)=O)[C@@H](C)C[C@@]3(CO3)C(=O)[C@H](C)[C@@H](OC(C)=O)[C@@H](C)[C@@H](C)OC(=O)[C@@H]2C)O[C@@H](C)[C@@H]1OC(C)=O-expected887)
        • PASSED [ 90%]
      • 0 ms
        passed(CCCC[C@@H]1CC(=O)[C@]2(O)O[C@@H]3[C@@H](NC)[C@@H](O)[C@@H](NC)[C@H](O)[C@H]3O[C@@H]2O1-expected888)
        • PASSED [ 90%]
      • 0 ms
        passed(Cc1ccc(C(C)C)c(OCC2=NCCN2)c1-expected889)
        • PASSED [ 90%]
      • 1 ms
        passed(CC[C@]1(O)C[C@H]2CN(CCc3c([nH]c4ccccc34)[C@@](C(=O)OC)(c3cc4c(cc3OC)N(C)[C@H]3[C@@](O)(C(N)=O)[C@H](O)[C@]5(CC)C=CCN6CC[C@]43[C@@H]65)C2)C1-expected890)
        • PASSED [ 90%]
      • 0 ms
        passed([C-]#[N+]C(=C\\c1ccc(O)cc1)/C(=C/c1ccc(O)cc1)[N+]#[C-]-expected891)
        • PASSED [ 90%]
      • 0 ms
        passed(FC(F)(Cl)C(F)(F)Cl-expected892)
        • PASSED [ 90%]
      • 0 ms
        passed(C[C@H]1CCCC[C@@]1(c1cccs1)N1CCCCC1-expected893)
        • PASSED [ 90%]
      • 1 ms
        failed(CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C_[Cl-]_[H+]-expected894)
        • FAILED [ 90%]
        • [14:08:27] WARNING: not removing hydrogen atom without neighbors
          [14:08:27] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C.[Cl-].[H+]-expected894])
          array([[1]]) != array([2])
          test_input = 'CC(Cc1ccccc1)NCCn1cnc2c1c(=O)n(C)c(=O)n2C.[Cl-].[H+]'
          expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CC(=O)NCCCN1CCN(c2cc(Cl)ccc2Cl)CC1-expected895)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)OC1CC[C@@]2(C)C([C@@H]1Br)[C@H](Br)C[C@H]1[C@@H]3CC[C@H]([C@H](C)CCCC(C)C)[C@@]3(C)CC[C@@H]12-expected896)
        • PASSED [ 90%]
      • 0 ms
        passed(CCC(Br)(CC)C(=O)NC(=O)NC(C)=O-expected897)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)OCC(=O)OCC/C(SC(=O)c1ccco1)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected898)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)NC(CCC(N)=O)C(=O)O-expected899)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)NCC1(c2ccccc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected900)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2O)cc1-expected901)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)Nc1nnc(S(N)(=O)=O)s1-expected902)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)OCC/C(SC(C)=O)=C(/C)N(C=O)Cc1cnc(C)nc1N-expected903)
        • PASSED [ 90%]
      • 0 ms
        passed(CC(=O)SCC(Cc1ccccc1)C(=O)NCC(=O)OCc1ccccc1-expected904)
        • PASSED [ 90%]
      • 0 ms
        passed(CCC[C@@](C)(O)[C@H]1CC23C=CC1(OC)[C@H]1Oc4c(OC(C)=O)ccc5c4C12CCN(C)C3C5-expected905)
        • PASSED [ 90%]
      • 0 ms
        passed(CCC(OC(C)=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1-expected906)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)OCC1=CO[C@@H](OC(=O)CC(C)C)[C@H]2C1=C[C@H](OC(=O)CC(C)(C)OC(C)=O)[C@]21CO1-expected907)
        • PASSED [ 91%]
      • 0 ms
        passed(C=CC1O[C@@H]2CC3C4CCC5=CC(=O)C=CC5(C)C4(F)C(O)CC3(C)[C@]2(C(=O)CO)O1-expected908)
        • PASSED [ 91%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(COCCO)c2[nH]1-expected909)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)OCCNC12CC3CC(CC(C3)C1)C2-expected910)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C(NCCN1CCN(c2ncccn2)CC1)C12CC3CC(CC(C3)C1)C2-expected911)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(N)C(=O)OC(C)(C)Cc1ccc(Cl)cc1-expected912)
        • PASSED [ 91%]
      • 0 ms
        passed(CCC(=O)OCC(=O)[C@@]1(OC(=O)CC)[C@H](C)C[C@H]2[C@H]3[C@H]([C@@H](O)C[C@@]21C)[C@@]1(C)C=CC(=O)C=C1C[C@H]3Cl-expected913)
        • PASSED [ 91%]
      • 0 ms
        passed(CCCN(CCC)C1Cc2cccc3cc(O)cc(c23)C1-expected914)
        • PASSED [ 91%]
      • 0 ms
        passed(CC12CC(=O)[C@H]3C(CC[C@H]4C[C@H](O)CCC43C)[C@@H]1CCC2C(=O)CO-expected915)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@H](O)CC[C@]4(C)[C@H]3C(=O)C[C@]12C-expected916)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)C12OC(C)(C)OC1CC1C3CCC4=CC(=O)CCC4(C)C3CCC12C-expected917)
        • PASSED [ 91%]
      • 0 ms
        passed(COC1(F)C(F)(F)C1(F)Cl-expected918)
        • PASSED [ 91%]
      • 0 ms
        passed(C=CCN1CCC23c4c5ccc(O)c4OC2C2(OC)C=CC3(CC2[C@](C)(O)CCC)C1C5-expected919)
        • PASSED [ 91%]
      • 0 ms
        passed(C=CCN1C(=O)OC(C)C1=O-expected920)
        • PASSED [ 91%]
      • 0 ms
        passed(CNC[C@@H]1CN(c2ccc(OCc3cccc(Cl)c3)cc2)C(=O)O1-expected921)
        • PASSED [ 91%]
      • 1 ms
        failed(CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1_[Cl-]_[H+]-expected922)
        • FAILED [ 91%]
        • [14:08:28] WARNING: not removing hydrogen atom without neighbors
          [14:08:28] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1.[Cl-].[H+]-expected922])
          array([[0]]) != array([1])
          test_input = 'CCCN(CCCCN1C(=O)CC2(CCCC2)CC1=O)C1COc2cccc(OC)c2C1.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(O=C1CCC2(CCC(=O)c3ccccc32)C(=O)N1-expected923)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)NCCn1c(C)cc(C=O)c1C-expected924)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(CC#N)N(C)CC(=O)N(C)c1ccc(Cl)cc1C(=O)c1ccccc1F-expected925)
        • PASSED [ 91%]
      • 0 ms
        passed(CCC(=O)O[C@]1(c2ccccc2)CCN(C)C[C@@H]1CC-expected926)
        • PASSED [ 91%]
      • 0 ms
        passed(CC[C@@H](O)C(C[C@@H](C)N(C)C)(c1ccccc1)c1ccccc1-expected927)
        • PASSED [ 91%]
      • 0 ms
        passed(C=CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)NC)c(N)cc1OC-expected928)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C(O)CN1C(=O)c2cccc3cccc(c23)C1=O-expected929)
        • PASSED [ 91%]
      • 0 ms
        passed(CCC1(CC)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@@]4(F)[C@@H](O)CC3(C)[C@]2(C(=O)CO)O1-expected930)
        • PASSED [ 91%]
      • 0 ms
        passed(CC12C[C@H](O)[C@@]3(F)C(CCC4=CC(=O)C=CC43C)[C@@H]1C[C@H]1O[C@@](C)(c3ccccc3)O[C@]12C(=O)CO-expected931)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC3(CCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected932)
        • PASSED [ 91%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected933)
        • PASSED [ 91%]
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)c1ccc(N)cc1-expected934)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(C)n1cc2c3c(cccc31)C1C[C@@H](C(=O)NC3CCCCC3)CN(C)C1C2-expected935)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(Cc1ccccc1)NC(C#N)c1ccccc1-expected936)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C(O)CCCCCC[NH2+]C1c2ccccc2CCc2ccccc21_[Cl-]-expected937)
        • PASSED [ 91%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(S(=O)(=O)CC)c(N)cc1OC-expected938)
        • PASSED [ 91%]
      • 0 ms
        passed(C[N+](C)([O-])CCC=C1c2ccccc2CCc2ccccc21-expected939)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(C)CCOC(CN1CCCC1)c1ccccc1-expected940)
        • PASSED [ 91%]
      • 0 ms
        passed(CCNC(=O)N1CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected941)
        • PASSED [ 91%]
      • 0 ms
        passed(Nc1cccc(-n2ccccc2=O)c1-expected942)
        • PASSED [ 91%]
      • 0 ms
        passed(CN(C)c1cnccn1-expected943)
        • PASSED [ 91%]
      • 0 ms
        passed(CCC(C)(C)O-expected944)
        • PASSED [ 91%]
      • 0 ms
        passed(CCOC(=O)C1(c2ccccc2)CCN(CCc2ccc(N)cc2)CC1-expected945)
        • PASSED [ 91%]
      • 0 ms
        passed(COc1ccc(C(=O)N2CCCC2=O)cc1-expected946)
        • PASSED [ 91%]
      • 0 ms
        passed(COc1cc2oc(=O)c(C)c(C)c2cc1OCCCN1CCN(c2ccccc2OC)CC1-expected947)
        • PASSED [ 91%]
      • 0 ms
        passed(CCCNC(=O)c1ccc2c(c1)N([C@H](C)CN1CCCC1)c1ccccc1S2-expected948)
        • PASSED [ 91%]
      • 0 ms
        passed(C=CCC1(C(C)C)C(=O)NC(=O)NC1=O-expected949)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C1CCc2ccc(OCCCCN3CCN(c4cccc(Cl)c4Cl)CC3)cc2N1-expected950)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C1C(O)=C(O)OC1C(O)CO-expected951)
        • PASSED [ 91%]
      • 0 ms
        passed(CC(=O)Oc1ccccc1C(=O)O-expected952)
        • PASSED [ 91%]
      • 0 ms
        passed(CCN(CC)c1ccc(NC(=O)c2ccccc2N)c(C)c1-expected953)
        • PASSED [ 91%]
      • 0 ms
        passed(CN1C2CCC1CC(OC(=O)C(C)(CO)c1ccccc1)C2-expected954)
        • PASSED [ 91%]
      • 0 ms
        passed(C[N+]1([O-])C2CCC1CC(OC(=O)C(CO)c1ccccc1)C2-expected955)
        • PASSED [ 91%]
      • 0 ms
        passed(CN(C(=O)CNC(=O)[C@@H](N)CCCCN)c1ccc(Cl)cc1C(=O)c1ccccc1-expected956)
        • PASSED [ 91%]
      • 0 ms
        passed(O=c1[nH]c2cc(Cl)ccc2n1C1CCN(CC2COc3ccccc3O2)CC1-expected957)
        • PASSED [ 91%]
      • 0 ms
        passed(Nc1ccc(S(=O)(=O)N2CC3CCC(CC3)C2)cc1-expected958)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C(CCCN1CCN2CCCC2C1)c1ccc(F)cc1-expected959)
        • PASSED [ 91%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CCNCC1-expected960)
        • PASSED [ 91%]
      • 0 ms
        passed(O=C1NCCN1C1CCN(CCC2COc3ccccc3O2)CC1-expected961)
        • PASSED [ 91%]
      • 0 ms
        passed(c1ccc2c(c1)CCN1CCNCC21-expected962)
        • PASSED [ 92%]
      • 0 ms
        passed(c1ccc2c(c1)cc1n2CCCNC1-expected963)
        • PASSED [ 92%]
      • 0 ms
        passed(CN(CCc1cc2cccc3c2n1-c1ccccc1CC3)Cc1ccccc1-expected964)
        • PASSED [ 92%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCN1C[C@H]2C[C@H](c3ccc(F)cc3)[C@H]2C1-expected965)
        • PASSED [ 92%]
      • 0 ms
        passed(CCN(CCO)CCn1c(Cc2ccccc2)nc2c1c(=O)n(C)c(=O)n2C-expected966)
        • PASSED [ 92%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)NC1=O-expected967)
        • PASSED [ 92%]
      • 0 ms
        passed(Cc1nc2n(n1)C(N1CCN(C)CC1)=Nc1ccccc1C2-expected968)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C(CCCl)NCc1ccccc1-expected969)
        • PASSED [ 92%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CO-expected970)
        • PASSED [ 92%]
      • 0 ms
        passed(COC[C@H]1CN(c2ccc(OCC[C@@H](O)C(F)(F)F)cc2)C(=O)O1-expected971)
        • PASSED [ 92%]
      • 0 ms
        passed(CCC1(C)CC(=O)NC(=O)C1-expected972)
        • PASSED [ 92%]
      • 0 ms
        passed(C/C(=C(\\CCOP(=O)(O)O)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected973)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)c2ccccc2OC(C)=O)cc1-expected974)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C1CNC(c2ccccc2)=c2c3c(sc2=N1)CCCC3-expected975)
        • PASSED [ 92%]
      • 0 ms
        passed(C/C(=C(\\CCOC(=O)c1ccccc1)SC(=O)c1ccccc1)N(C=O)Cc1cnc(C)nc1N-expected976)
        • PASSED [ 92%]
      • 0 ms
        passed(C[N+](C)([O-])CC/C=C1/c2ccccc2C=Cc2c(Cl)cccc21-expected977)
        • PASSED [ 92%]
      • 1 ms
        failed([Cl]_c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978)
        • FAILED [ 92%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[[Cl].c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1-expected978])
          array([[0]]) != array([1])
          test_input = '[Cl].c1ccc(Cn2cc(CCc3ccncc3)c3ccccc32)cc1', expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(OCc1ccccc1-expected979)
        • PASSED [ 92%]
      • 0 ms
        passed(CN1CCc2cc(Cl)c(O)cc2[C@@H](c2cc(Br)cc3c2OCC3)C1-expected980)
        • PASSED [ 92%]
      • 0 ms
        passed(CCOC(=O)C[C@@H](O)C[C@@H](O)/C=C/C1=C(c2ccc(F)cc2)c2ccccc2OC12CCCC2-expected981)
        • PASSED [ 92%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@@]1(OC(=O)c1ccccc1)C(=O)CO-expected982)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCCC(=O)O[C@]1(C(=O)CO)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected983)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C1CC2(CCCC2)CC(=O)N1CCNCC1COc2ccccc2O1-expected984)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C(O)CCCCC1SCC2NC(=O)NC21-expected985)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C1C[C@H]2SC(C3(O)CN4C(=O)C[C@H]4S3)CN12-expected986)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C(CCCN1CCN2Cc3[nH]c4ccccc4c3CC2C1)c1ccc(F)cc1-expected987)
        • PASSED [ 92%]
      • 0 ms
        passed(C/C(=C(/CCOC(=O)c1ccccc1)SS/C(CCOC(=O)c1ccccc1)=C(\\C)N(C=O)Cc1cnc(C)nc1N)N(C=O)Cc1cnc(C)nc1N-expected988)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(=O)NCCC[C@H](NC(C)=O)C(=O)O-expected989)
        • PASSED [ 92%]
      • 0 ms
        passed(CCN1CCN(c2cc(-c3ccc(F)cc3)c3c(n2)CCCCCC3)CC1-expected990)
        • PASSED [ 92%]
      • 0 ms
        passed(CC[C@]12CCN(CC3(O)CC3)[C@H](Cc3ccc(O)cc31)C2(C)C-expected991)
        • PASSED [ 92%]
      • 0 ms
        passed(CC1(C)OC(=O)Nc2ccc(Br)cc21-expected992)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(C)C(Br)C(=O)NC(N)=O-expected993)
        • PASSED [ 92%]
      • 0 ms
        passed(BrC(Br)Br-expected994)
        • PASSED [ 92%]
      • 0 ms
        passed(Cc1cc(Br)cc(C(N)=O)c1O-expected995)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C1CC(c2cccc(Br)c2)C(=O)N1-expected996)
        • PASSED [ 92%]
      • 0 ms
        passed(Cc1nnc2n1-c1sc(Br)cc1C(c1ccccc1Cl)=NC2-expected997)
        • PASSED [ 92%]
      • 0 ms
        passed(Nc1nc(=O)c2ncn(CC[C@@H](O)CO)c2[nH]1-expected998)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(C)(C)C)cc1-expected999)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCC(=O)c1ccc2c(c1)N(CCCN1CCN(C)CC1)c1ccccc1S2-expected1000)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCCC(CC)CNC(=O)CC(C)O-expected1001)
        • PASSED [ 92%]
      • 0 ms
        passed(Oc1ccc2c(c1)[C@@]13CCCC[C@@]1(O)[C@@H](C2)N(CC1CCC1)CC3-expected1002)
        • PASSED [ 92%]
      • 0 ms
        passed(C=CCN1C[C@H](C(=O)N(CCCN(C)C)C(=O)NCC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21-expected1003)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(NCCn1cnc2c1c(=O)n(C)c(=O)n2C)C(O)c1ccccc1-expected1004)
        • PASSED [ 92%]
      • 0 ms
        passed(CN(C)C(=O)OC1N=C(c2ccccc2)c2cc(Cl)ccc2N(C)C1=O-expected1005)
        • PASSED [ 92%]
      • 0 ms
        passed(CC12CCC(CC1=O)C2(C)C-expected1006)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCCC/C(=N/OCCN)c1ccc(C)c(N)c1-expected1007)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCCSc1ccc(C(SCCN(C)C)c2ccccc2)cc1-expected1008)
        • PASSED [ 92%]
      • 0 ms
        passed(CCCCC1(CCOC(N)=O)C(=O)NC(=O)NC1=O-expected1009)
        • PASSED [ 92%]
      • 0 ms
        passed(CN1C(=O)CN(C(N)=O)C(c2ccccc2)c2cc(Cl)ccc21-expected1010)
        • PASSED [ 92%]
      • 0 ms
        passed(C#CC(OC(N)=O)c1ccccc1-expected1011)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C(O)C1CCN1C12CC3CC(CC(C3)C1)C2-expected1012)
        • PASSED [ 92%]
      • 0 ms
        passed(NC(=O)CN1Cc2ccccc2OC1=O-expected1013)
        • PASSED [ 92%]
      • 0 ms
        passed(CC(C)NC(=O)OC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1014)
        • PASSED [ 92%]
      • 0 ms
        passed(CCC(=O)c1ccc2c(c1)N(CCCN1CCN(CCO)CC1)c1ccccc1S2-expected1015)
        • PASSED [ 92%]
      • 0 ms
        passed(NS(=O)(=O)c1ccc(C(=O)O)cc1-expected1016)
        • PASSED [ 92%]
      • 0 ms
        passed(C[C@H](N)C(=O)c1ccccc1-expected1017)
        • PASSED [ 92%]
      • 0 ms
        passed(O=C1CN(C(=O)CN2CC(c3ccc(Cl)cc3)CC2=O)CCN1-expected1018)
        • PASSED [ 92%]
      • 0 ms
        passed(OC1OC(COCCOC(O)C(Cl)(Cl)Cl)C(OC2OC(COCCOCCOC(O)C(Cl)(Cl)Cl)CC(OC(O)C(Cl)(Cl)Cl)C2O)C(OCCOCCOC(O)C(Cl)(Cl)Cl)C1O-expected1019)
        • PASSED [ 93%]
      • 0 ms
        passed(COCc1c(C(C)C)nc(C(C)C)c(/C=C/[C@@H](O)C[C@@H](O)CC(=O)O)c1-c1ccc(F)cc1-expected1020)
        • PASSED [ 93%]
      • 0 ms
        passed(Cc1cc(C)c(=O)[nH]n1-expected1021)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)c1ccc(C(O)C(CO)NC(=O)C(Cl)Cl)cc1-expected1022)
        • PASSED [ 93%]
      • 0 ms
        passed(CCOC(=O)OCC/C(SC(=O)OCC)=C(\\C)N(C=O)Cc1cnc(C)nc1N-expected1023)
        • PASSED [ 93%]
      • 0 ms
        passed(OC[C@@H](O)[C@H]1OC2O[C@H](C(Cl)(Cl)Cl)O[C@@H]2[C@H]1O-expected1024)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(CC(C)(C)O)OC(O)C(Cl)(Cl)Cl-expected1025)
        • PASSED [ 93%]
      • 0 ms
        passed(CN1C(=O)CCS(=O)(=O)C1c1ccc(Cl)cc1-expected1026)
        • PASSED [ 93%]
      • 0 ms
        passed(ClC(Cl)Cl-expected1027)
        • PASSED [ 93%]
      • 0 ms
        passed(O=C(O)c1cc(=O)c2ccccc2o1-expected1028)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(C)C(=O)OCC(=O)[C@@]12O[C@H](C3CCCCC3)O[C@@H]1C[C@H]1[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]12C-expected1029)
        • PASSED [ 93%]
      • 0 ms
        passed(Clc1ccccc1C1=NCc2nnc(C3CCCCC3)n2-c2sc(Br)cc21-expected1030)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1C3CC(C#N)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1031)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(C)N[C@H]1C2CCC(CC2)[C@]1(O)c1ccc(Cl)c(Cl)c1-expected1032)
        • PASSED [ 93%]
      • 0 ms
        passed(NNCC1CCCCC1-expected1033)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(C)C(O)C1CCCCC1-expected1034)
        • PASSED [ 93%]
      • 0 ms
        passed(COCC1CN(c2ccc(OCc3cccc(C#N)c3)cc2)C(=O)O1-expected1035)
        • PASSED [ 93%]
      • 0 ms
        passed(COc1cc(/C=C/C(=O)N2CCCCCCC2)cc(OC)c1OC-expected1036)
        • PASSED [ 93%]
      • 0 ms
        passed(N#CCCN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1037)
        • PASSED [ 93%]
      • 0 ms
        passed(CN(C(=O)CNC1CC1)c1ccc(Cl)cc1C(=O)c1ccccc1Cl-expected1038)
        • PASSED [ 93%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)COC(=O)C2CC2)O1-expected1039)
        • PASSED [ 93%]
      • 0 ms
        passed(CN1CCC2=C(CC1)c1cc(C#N)ccc1Sc1ccccc12-expected1040)
        • PASSED [ 93%]
      • 0 ms
        passed(COc1cc(N)c(Cl)cc1C(=O)NC1CCN(Cc2ccccc2)CC1-expected1041)
        • PASSED [ 93%]
      • 0 ms
        passed(Clc1cccc(Cl)c1NC1=NCCO1-expected1042)
        • PASSED [ 93%]
      • 0 ms
        passed(C[C@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1043)
        • PASSED [ 93%]
      • 0 ms
        passed(CCCC(=O)O[C@]1(C(=O)CCl)[C@@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)C(=O)C[C@@]21C-expected1044)
        • PASSED [ 93%]
      • 0 ms
        passed(NC(=O)C1(N2CCCCC2)CCN(CCCN2c3ccccc3CCc3ccc(Cl)cc32)CC1-expected1045)
        • PASSED [ 93%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)CO-expected1046)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@H]1[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](O)C[C@@]21C-expected1047)
        • PASSED [ 93%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(Cl)C(O)CC2(C)C1C(=O)COC(=O)C(C)(C)C-expected1048)
        • PASSED [ 93%]
      • 0 ms
        passed(CN(C)CCCn1c(=O)n(-c2ccccc2)c2cc(Cl)ccc21-expected1049)
        • PASSED [ 93%]
      • 0 ms
        passed(CCN(CC)CCOC1(c2ccc(Cl)cc2)CCCCC1-expected1050)
        • PASSED [ 93%]
      • 0 ms
        passed(O=C(CCCN1CCC(O)(c2ccc(Cl)c(C(F)(F)F)c2)CC1)c1ccc(F)cc1-expected1051)
        • PASSED [ 93%]
      • 0 ms
        passed(OCCN1CCN(CC/C=C2/c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1052)
        • PASSED [ 93%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2c(=O)n1CCCN1CCN(c2cccc(Cl)c2)CC1-expected1053)
        • PASSED [ 93%]
      • 0 ms
        passed(C[C@]12C=CC(=O)C=C1C(Cl)=C[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)CO-expected1054)
        • PASSED [ 93%]
      • 0 ms
        passed(O=C(OCC(Cl)(Cl)Cl)OCC(Cl)(Cl)Cl-expected1055)
        • PASSED [ 93%]
      • 0 ms
        passed(C#CCN(C)CCCOc1ccc(Cl)cc1Cl-expected1056)
        • PASSED [ 93%]
      • 0 ms
        passed(O=C(CCCN1CCC(C(=O)c2ccc(Cl)cc2)CC1)c1ccc(F)cc1-expected1057)
        • PASSED [ 93%]
      • 0 ms
        passed(CN1CCN(C2Cc3ccccc3Sc3ccc(Cl)cc32)CC1-expected1058)
        • PASSED [ 93%]
      • 0 ms
        passed(CCc1cc2c(s1)N(C)C(=O)CN=C2c1ccccc1Cl-expected1059)
        • PASSED [ 93%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)SCCl)[C@H](C)C[C@H]2C3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1060)
        • PASSED [ 93%]
      • 0 ms
        passed(CNC(=O)CCN1CCN(CCC=C2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1061)
        • PASSED [ 93%]
      • 0 ms
        passed(CCC12CCN(CC3CCC3)C(Cc3ccc(O)cc31)C2(C)C-expected1062)
        • PASSED [ 93%]
      • 0 ms
        passed(CC[C@H]1CC(=O)[C@@H]2Oc3c(OC)ccc4c3[C@@]23CCN(CC2CC2)C(C4)[C@H]13-expected1063)
        • PASSED [ 93%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2CCC2(C)C1CCC2(O)C(=O)CO-expected1064)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3C(=O)C[C@@]21C-expected1065)
        • PASSED [ 93%]
      • 0 ms
        passed(CC1=C[C@@H]2[C@H]([C@@H](O)C[C@@]3(C)[C@H]2C[C@@H](C)[C@]3(O)C(=O)COC(=O)c2cccc(S(=O)(=O)O)c2)[C@@]2(C)Cc3cnn(-c4ccccc4)c3C=C12-expected1066)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C=C(C)C4=Cc5c(cnn5-c5ccccc5)C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1067)
        • PASSED [ 93%]
      • 0 ms
        passed(CN1C(=O)CCC1c1cccnc1-expected1068)
        • PASSED [ 93%]
      • 0 ms
        passed(CN(C)CC(=O)C=C1c2ccccc2CCc2ccccc21-expected1069)
        • PASSED [ 93%]
      • 0 ms
        passed(CC1CC(OC(=O)C2CCC(=O)N2)CC(C)(C)C1-expected1070)
        • PASSED [ 93%]
      • 0 ms
        passed(C/C=C/C(=O)N(CC)C(CC)C(=O)N(C)C-expected1071)
        • PASSED [ 93%]
      • 0 ms
        passed(O=C(Nc1ccccc1)OCC1(COC(=O)Nc2ccccc2)CCCC1-expected1072)
        • PASSED [ 93%]
      • 0 ms
        passed(CN(C)C1CCc2[nH]c3ccccc3c2C1-expected1073)
        • PASSED [ 93%]
      • 0 ms
        passed(CCC1(C2=CCCCC2)C(=O)NC(=O)NC1=O-expected1074)
        • PASSED [ 93%]
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C=Cc2ccccc21-expected1075)
        • PASSED [ 93%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@@H](O)C45CC4CC[C@]5(C)[C@H]3CC[C@]12C-expected1076)
        • PASSED [ 94%]
      • 0 ms
        passed(C/C(=C1/CCOC(=O)S1)N(C=O)Cc1cnc(C)nc1N-expected1077)
        • PASSED [ 94%]
      • 0 ms
        passed(NC(=O)C1c2ccccc2CCc2ccccc21-expected1078)
        • PASSED [ 94%]
      • 0 ms
        passed(COC12C=CC3(CC1C(C)(C)O)[C@@H]1Cc4ccc(O)c5c4[C@]3(CCN1CC1CC1)[C@@H]2O5-expected1079)
        • PASSED [ 94%]
      • 0 ms
        passed(CN(C)CCOC(=O)CCC1CCCCC1-expected1080)
        • PASSED [ 94%]
      • 0 ms
        passed(OC(c1ccccc1)(c1ccccc1)C1CC1c1ccncc1-expected1081)
        • PASSED [ 94%]
      • 0 ms
        passed(O=C1NC(=O)C2(c3ccc(Cl)cc3)CC12-expected1082)
        • PASSED [ 94%]
      • 0 ms
        passed(CN(C)CC(=O)N1c2ccccc2Sc2ccccc21-expected1083)
        • PASSED [ 94%]
      • 0 ms
        passed(OC(C1=NCCN1)(c1ccc(Cl)cc1)c1ccccn1-expected1084)
        • PASSED [ 94%]
      • 0 ms
        passed(CCCCCCCCCCOc1c(OC)cc(C(N)=O)cc1OC-expected1085)
        • PASSED [ 94%]
      • 0 ms
        passed(Cc1ccc(Cc2ccccc2)c(N2CCNCC2)c1-expected1086)
        • PASSED [ 94%]
      • 0 ms
        passed(O=C1CN(O)C(c2ccccc2)=c2cc(Cl)ccc2=N1-expected1087)
        • PASSED [ 94%]
      • 0 ms
        passed(CCCCn1c(=O)c2c(ncn2CC(C)=O)n(CCCC)c1=O-expected1088)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)C1(O)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1089)
        • PASSED [ 94%]
      • 0 ms
        passed(Nc1ncc2ncn(COCCO)c2n1-expected1090)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)[C@@]1(O)[C@H](O)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1091)
        • PASSED [ 94%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3C4CCC5=CC(=O)C=CC5(C)[C@H]4C(O)CC3(C)[C@]2(C(=O)CO)O1-expected1092)
        • PASSED [ 94%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)CO-expected1093)
        • PASSED [ 94%]
      • 0 ms
        passed(Cc1cccc(Cc2cnc[nH]2)c1C-expected1094)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(OC(=O)c2ccco2)[C@H](C)C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1095)
        • PASSED [ 94%]
      • 0 ms
        passed(c1ccc([C@@H]2CN3CCSC3=N2)cc1-expected1096)
        • PASSED [ 94%]
      • 0 ms
        passed(c1ccc(C2CN=C3NCCN32)cc1-expected1097)
        • PASSED [ 94%]
      • 0 ms
        passed(c1ccc(C2(c3ccccc3)OC[C@H]([C@@H]3CCCCN3)O2)cc1-expected1098)
        • PASSED [ 94%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CC[C@](O)(C(=O)CO)C3(C)CC(Cl)[C@@]12Cl-expected1099)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CCC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC21C-expected1100)
        • PASSED [ 94%]
      • 0 ms
        passed(CCN(CC)CCNC(=O)c1cc(Cl)cc(Cl)c1OC-expected1101)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)O[C@H]1C[C@@H]2C(COC(=O)CC(C)C)=CO[C@@H](OC(=O)CC(C)C)[C@@H]2[C@@]12CO2-expected1102)
        • PASSED [ 94%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)N(CC(COCCCC)OC(N)=O)C(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1103)
        • PASSED [ 94%]
      • 0 ms
        passed(Fc1ccc(C(CCCN2CCN(CCNc3ccccc3)CC2)c2ccc(F)cc2)cc1-expected1104)
        • PASSED [ 94%]
      • 0 ms
        passed(C[C@@H]1CC2C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC2(C)C1C(=O)CO-expected1105)
        • PASSED [ 94%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@]2(C)[C@H]1C(=O)COC(=O)C(C)(C)C-expected1106)
        • PASSED [ 94%]
      • 0 ms
        passed(CN1CCC(C)(CN2c3ccccc3Sc3ccccc32)C1-expected1107)
        • PASSED [ 94%]
      • 0 ms
        passed(CC1(C)OC(=O)NC1=O-expected1108)
        • PASSED [ 94%]
      • 0 ms
        passed(CN(C)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1109)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(Cc1ccccc1)N(C)C-expected1110)
        • PASSED [ 94%]
      • 0 ms
        passed(O=C1CN2C(=O)CCC2N1-expected1111)
        • PASSED [ 94%]
      • 0 ms
        passed(CCCCCCCCCC1(C)OCC(COC(N)=O)O1-expected1112)
        • PASSED [ 94%]
      • 0 ms
        passed(CC(=O)NNC(=O)CC(O)(c1ccccc1)c1ccccc1-expected1113)
        • PASSED [ 94%]
      • 0 ms
        passed(CO[C@]12CC[C@@]3(C[C@@H]1C(C)(C)O)[C@H]1Cc4ccc(O)c5c4[C@@]3(CCN1CC1CC1)[C@H]2O5-expected1114)
        • PASSED [ 94%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(C(=O)c3ccccc3)cn2c1C-expected1115)
        • PASSED [ 94%]
      • 0 ms
        passed(CC12NC(Cc3ccccc31)c1ccccc12-expected1116)
        • PASSED [ 94%]
      • 0 ms
        passed(CCCC(=O)O[C@]1(C(C)=O)CCC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1117)
        • PASSED [ 94%]
      • 1 ms
        failed(COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2_[Cl-]_[H+]-expected1118)
        • FAILED [ 94%]
        • [14:08:28] WARNING: not removing hydrogen atom without neighbors
          [14:08:28] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2.[Cl-].[H+]-expected1118])
          array([[0]]) != array([1])
          test_input = 'COc1cc2c(cc1OC)C(=O)C(CC1CCN(Cc3ccccc3)CC1)C2.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(O=C(NCCc1ccc(O)c(O)c1)C12CC3CC(CC(C3)C1)C2-expected1119)
        • PASSED [ 94%]
      • 0 ms
        passed(CCN1CC(CCN2CCOCC2)C(c2ccccc2)(c2ccccc2)C1=O-expected1120)
        • PASSED [ 94%]
      • 0 ms
        passed(COc1ccc2c(c1OC)[C@]13CCN(C)[C@H](C2)[C@]1(O)CC[C@@H](O)C3-expected1121)
        • PASSED [ 94%]
      • 0 ms
        passed(CNCCC(Oc1cccc2ccccc12)c1cccs1-expected1122)
        • PASSED [ 94%]
      • 0 ms
        passed(O=C(c1ccc(F)cc1)C1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1123)
        • PASSED [ 94%]
      • 0 ms
        passed(O=C(CN1CCCC1=O)NNC(=O)CN1CCCC1=O-expected1124)
        • PASSED [ 94%]
      • 0 ms
        passed(CCC(=O)N(c1ccc(Cl)c(Cl)c1)[C@@H]1CCC[C@H]1N(C)C-expected1125)
        • PASSED [ 94%]
      • 0 ms
        passed(CC1=NN(c2ccccc2)C(=O)C1-expected1126)
        • PASSED [ 94%]
      • 0 ms
        passed(Cc1nccn1C(C)c1ccccc1-expected1127)
        • PASSED [ 94%]
      • 0 ms
        passed(CCN(CC)C/C=C1/c2ccccc2Nc2cc(Cl)ccc21-expected1128)
        • PASSED [ 94%]
      • 0 ms
        passed(CCS(=O)(=O)CCN1C(=O)CN=C(c2ccccc2F)c2cc(Cl)ccc21-expected1129)
        • PASSED [ 94%]
      • 0 ms
        passed(Fc1ccc(-c2ccc(CN3CCN(c4cccc5ccoc45)CC3)[nH]2)cc1-expected1130)
        • PASSED [ 94%]
      • 0 ms
        passed(c1cc2c(c(N3CCNCC3)c1)OCCO2-expected1131)
        • PASSED [ 94%]
      • 0 ms
        passed(CCC(CC)(CNC(=O)CCCO)c1cccc(OC)c1-expected1132)
        • PASSED [ 95%]
      • 0 ms
        passed(COc1ccccc1N1CCN(CC(O)COc2cc(OC)c(OC)c(OC)c2)CC1-expected1133)
        • PASSED [ 95%]
      • 0 ms
        passed(CCOC(=O)N(Cc1ccccc1)C1CC1-expected1134)
        • PASSED [ 95%]
      • 0 ms
        passed(OC1CCN(c2ccc(-c3ccc(Cl)cc3Cl)nn2)CC1-expected1135)
        • PASSED [ 95%]
      • 0 ms
        passed(CCN(CC)C(=O)[C@H]1[C@H](C(=O)N(CC)CC)[C@H]2C=C[C@@H]1C2-expected1136)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(=O)C1CCC2C3CC(C)C4=CC(=O)C=CC4(C)C3C(O)CC12C-expected1137)
        • PASSED [ 95%]
      • 0 ms
        passed(CC1OC2(CCCCC2Oc2cccc(Cl)c2)NC1=O-expected1138)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCCCCCNC(=O)Oc1ccc2c(c1)[C@]1(C)CCN(C)[C@@H]1N2C-expected1139)
        • PASSED [ 95%]
      • 0 ms
        passed(CN1CCC2=C(CC1)c1ccccc1N(C)c1ccccc12-expected1140)
        • PASSED [ 95%]
      • 0 ms
        passed(CCN1CCCC1CNC(=O)c1cc(C(C)=O)ccc1OC-expected1141)
        • PASSED [ 95%]
      • 0 ms
        passed(CCN(CC)CCn1cnc2c1c(=O)n(C)c(=O)n2C-expected1142)
        • PASSED [ 95%]
      • 0 ms
        passed(CCNC1=Nc2ccc(Cl)cc2C(c2ccccc2)S1-expected1143)
        • PASSED [ 95%]
      • 0 ms
        passed(CCOC1c2ccccc2C(=O)N(C)c2ccccc21-expected1144)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCl-expected1145)
        • PASSED [ 95%]
      • 0 ms
        passed(C=C-expected1146)
        • PASSED [ 95%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC=C(C)C1=O-expected1147)
        • PASSED [ 95%]
      • 0 ms
        passed(CCNC1(c2ccccc2)CCCCC1-expected1148)
        • PASSED [ 95%]
      • 0 ms
        passed(CCC(C(N)=O)N1CCCC1=O-expected1149)
        • PASSED [ 95%]
      • 0 ms
        passed(CCN(CC)S(=O)(=O)N[C@H]1C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1150)
        • PASSED [ 95%]
      • 0 ms
        passed(O=C(O)/C=C/C(=O)O_OCCOCCOCCN1CCN(C(c2ccccc2)c2ccc(Cl)cc2)CC1-expected1151)
        • PASSED [ 95%]
      • 0 ms
        passed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CC-expected1152)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(O)ccc5c4C12CCN(C)C3C5-expected1153)
        • PASSED [ 95%]
      • 0 ms
        passed(CCC1(c2ccccc2)OCC(C2CCCCN2)O1-expected1154)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(=O)OCC(CCn1cnc2cnc(N)nc21)COC(C)=O-expected1155)
        • PASSED [ 95%]
      • 0 ms
        passed(CN(C)CCCn1c(=O)c2ccccc2c2ccccc21-expected1156)
        • PASSED [ 95%]
      • 0 ms
        passed(CCc1c(OC)nc2nc(-c3noc(C)n3)cn2c1C-expected1157)
        • PASSED [ 95%]
      • 0 ms
        passed(O=C1CC[C@H](C(=O)N2CCCCC2)N1-expected1158)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCCOCC(CN1C(=O)NC(=O)C(CC)(c2ccccc2)C1=O)OC(N)=O-expected1159)
        • PASSED [ 95%]
      • 0 ms
        passed(NC(=O)OCC(COC(N)=O)c1ccccc1-expected1160)
        • PASSED [ 95%]
      • 0 ms
        passed(COc1ccc(OCC2CN(C)CCC2c2ccccc2)cc1-expected1161)
        • PASSED [ 95%]
      • 0 ms
        passed(O=C(CCCN1CCN(C(=O)OC2CCCCC2)CC1)c1ccc(F)cc1-expected1162)
        • PASSED [ 95%]
      • 0 ms
        passed(CCC(C(=O)OCCN1CCOC(c2ccccc2)C1C)c1ccccc1-expected1163)
        • PASSED [ 95%]
      • 0 ms
        passed(CCNC1C2CCC(C2)C1c1ccccc1-expected1164)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCCN/C(=C1/C=C(Cl)C=CC1=O)c1ccccc1Cl-expected1165)
        • PASSED [ 95%]
      • 0 ms
        passed(c1ccc(CC2NCCc3c2[nH]c2ccccc32)cc1-expected1166)
        • PASSED [ 95%]
      • 0 ms
        passed(CCC1C(=O)NC(=O)C1(C)c1ccccc1-expected1167)
        • PASSED [ 95%]
      • 0 ms
        passed(Clc1ccc(OCC2=NCCN2)cc1Cl-expected1168)
        • PASSED [ 95%]
      • 0 ms
        passed(CC1NC(=O)COC1c1ccccc1-expected1169)
        • PASSED [ 95%]
      • 0 ms
        passed(CN1CC(=O)N=C1NC(=O)Nc1cccc(Cl)c1-expected1170)
        • PASSED [ 95%]
      • 0 ms
        passed(CCNC1=NC(=O)C(c2ccccc2)O1-expected1171)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(C)(O)CC(C)(O)c1ccc(Cl)cc1-expected1172)
        • PASSED [ 95%]
      • 0 ms
        passed(Cn1nc(-c2cccnc2)nc1-c1ccccc1CO-expected1173)
        • PASSED [ 95%]
      • 0 ms
        passed(O=C(COc1ccc(Cl)cc1)N1CCN(Cc2ccc3c(c2)OCO3)CC1-expected1174)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(C)(C)NCC(O)c1ccccc1F-expected1175)
        • PASSED [ 95%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc([C@@H](O)[C@@H](CF)NC(=O)C(Cl)Cl)cc1-expected1176)
        • PASSED [ 95%]
      • 0 ms
        passed(CCN(CC)CCC(=O)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1177)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(=O)OCC(=O)C12N=C(C)OC1CC1C3CCC4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1178)
        • PASSED [ 95%]
      • 0 ms
        passed(CCOC(=O)N(CCN(C)C)c1cccc(C(F)(F)F)c1-expected1179)
        • PASSED [ 95%]
      • 0 ms
        passed(COc1ccc(S(N)(=O)=O)cc1C(=O)NCC1CCCN1Cc1ccc(F)cc1-expected1180)
        • PASSED [ 95%]
      • 0 ms
        passed(CC1(C)O[C@@H]2CC3C4C[C@H](F)C5=CC(=O)C=CC5(C)[C@@]4(Cl)C(Cl)CC3(C)[C@]2(C(=O)CO)O1-expected1181)
        • PASSED [ 95%]
      • 0 ms
        passed(C[C@]12CCC(=O)C=C1CC[C@H]1[C@@H]3CC[C@](O)(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F-expected1182)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1183)
        • PASSED [ 95%]
      • 0 ms
        passed(Cc1cc2c(s1)=Nc1ccc(F)cc1NC=2N1CCN(C)CC1-expected1184)
        • PASSED [ 95%]
      • 0 ms
        passed(COC(OC)C(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3C[C@H](F)C4=CC(=O)C=CC4(C)[C@@]3(F)C(O)CC12C-expected1185)
        • PASSED [ 95%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1C[C@H]1[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]12C-expected1186)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCCOC(=O)C(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1187)
        • PASSED [ 95%]
      • 0 ms
        passed(CCCCCC(=O)OCC(=O)C1C(C)CC2C3CC(F)C4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1188)
        • PASSED [ 95%]
      • 0 ms
        passed(CCS(=O)(=O)c1ccc(F)cc1-expected1189)
        • PASSED [ 96%]
      • 0 ms
        passed(CC(=O)O[C@]1(C(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1190)
        • PASSED [ 96%]
      • 0 ms
        passed(C[C@H]1c2ccccc2[C@@H](CCCN(C)C)c2cc(C(F)(F)F)ccc21-expected1191)
        • PASSED [ 96%]
      • 0 ms
        passed(CNCCC(Oc1ccc(C(F)(F)F)cc1)c1ccccc1-expected1192)
        • PASSED [ 96%]
      • 0 ms
        passed(CCCCCCC(=O)OCCN1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1193)
        • PASSED [ 96%]
      • 0 ms
        passed(OCCOC1CCN(CCCN2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1194)
        • PASSED [ 96%]
      • 0 ms
        passed(NC(=O)NCCN1CCN(c2cccc(C(F)(F)F)c2)CC1-expected1195)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1NCN(c2ccccc2)C12CCN(CCCC(c1ccc(F)cc1)c1ccc(F)cc1)CC2-expected1196)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Cl)ccc2N1CCO-expected1197)
        • PASSED [ 96%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2F)c2cc(Cl)ccc21-expected1198)
        • PASSED [ 96%]
      • 0 ms
        passed(CC1CC2C3CC(F)C4=CC(=O)C=CC4(C)C3(F)C(O)CC2(C)C1(O)C(=O)SCF-expected1199)
        • PASSED [ 96%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)SCF)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1200)
        • PASSED [ 96%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3cc(C(F)(F)F)ccc3Sc3sccc32)CC1-expected1201)
        • PASSED [ 96%]
      • 0 ms
        passed(CCOC(=O)c1cncn1C(C)c1ccc(F)cc1-expected1202)
        • PASSED [ 96%]
      • 0 ms
        passed(OC(CCCN1CCc2c(c3cc(F)ccc3n2-c2ccc(F)cc2)C1)c1ccc(F)cc1-expected1203)
        • PASSED [ 96%]
      • 0 ms
        passed(CC(C)n1c(/C=C/[C@@H](O)C[C@H](O)CC(=O)O)c(-c2ccc(F)cc2)c2ccccc21-expected1204)
        • PASSED [ 96%]
      • 0 ms
        passed(COCCCC/C(=N\\OCCN)c1ccc(C(F)(F)F)cc1_O=C(O)/C=C\\C(=O)O-expected1205)
        • PASSED [ 96%]
      • 0 ms
        passed(CNC(=O)N1CC(Oc2cccc(C(F)(F)F)c2)C1-expected1206)
        • PASSED [ 96%]
      • 0 ms
        passed(Nc1nc(=O)c2nc(CNc3ccc(C(=O)N[C@@H](CCC(=O)O)C(=O)O)cc3)cnc2[nH]1-expected1207)
        • PASSED [ 96%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]12OC(C)(C)O[C@@H]1CC1C3CC(C=O)=C4C=C(OCCCl)CCC4(C)[C@@]3(F)C(O)CC12C-expected1208)
        • PASSED [ 96%]
      • 0 ms
        passed(CP(C)(=O)CN1C(=O)CN=C(c2ccccc2)c2cc(Cl)ccc21-expected1209)
        • PASSED [ 96%]
      • 0 ms
        passed(NNC(=O)CP(=O)(c1ccccc1)c1ccccc1-expected1210)
        • PASSED [ 96%]
      • 0 ms
        passed(C[C@@H]1O[C@@H]1P(=O)(O)O-expected1211)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1NC(c2ccccc2)(c2ccccc2)C(=O)N1COP(=O)(O)O-expected1212)
        • PASSED [ 96%]
      • 0 ms
        passed(CN1CCN(CCC(=O)N2c3ccccc3Sc3ccc(C(F)(F)F)cc32)CC1-expected1213)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C(CCN1CCN(CCO)CC1)N1c2ccccc2Sc2ccc(C(F)(F)F)cc21-expected1214)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1OCCC1C1(O)CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1215)
        • PASSED [ 96%]
      • 0 ms
        passed(C/C(=C(/CCO)SSCC1CCCO1)N(C=O)Cc1cnc(C)nc1N-expected1216)
        • PASSED [ 96%]
      • 0 ms
        passed(O=c1[nH]oc2c1CCNC2-expected1217)
        • PASSED [ 96%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3CC[C@H]4C[C@](C)(O)CC[C@]4(C)[C@H]3CC[C@]12C-expected1218)
        • PASSED [ 96%]
      • 0 ms
        passed(COCc1c(C(=O)OC(C)C)ncc2[nH]c3cccc(Oc4ccc(Cl)cc4)c3c12-expected1219)
        • PASSED [ 96%]
      • 0 ms
        passed(CCC12CCN(CC3CC3)C(Cc3ccc(O)cc31)C2(C)C-expected1220)
        • PASSED [ 96%]
      • 1 ms
        failed(CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1_[Cl-]_[H+]-expected1221)
        • FAILED [ 96%]
        • [14:08:28] WARNING: not removing hydrogen atom without neighbors
          [14:08:28] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1.[Cl-].[H+]-expected1221])
          array([[0]]) != array([1])
          test_input = 'CC1(C)CC(=O)N(CCCCN2CCN(c3ncccn3)CC2)C(=O)C1.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(Fc1ccc2[nH]c3c(c2c1)CN(CCCc1cccnc1)CC3-expected1222)
        • PASSED [ 96%]
      • 0 ms
        passed(COc1cc2c(cc1OC)C(c1cccc(Cl)c1)=NN=C(C)C2-expected1223)
        • PASSED [ 96%]
      • 0 ms
        passed(CC1(C)O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)CC[C@]5(C)[C@@]4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)CCl)O1-expected1224)
        • PASSED [ 96%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)C3(Cl)[C@@H](F)C[C@]2(C)[C@H]1C(=O)CO-expected1225)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C(NCCN1CCC(n2c(=O)[nH]c3cc(Cl)ccc32)CC1)c1ccc(F)cc1-expected1226)
        • PASSED [ 96%]
      • 0 ms
        passed(CCCCCCCCCC(=O)OC1(c2ccc(Cl)cc2)CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1227)
        • PASSED [ 96%]
      • 0 ms
        passed(C[C@]12C=C(Br)C(=O)C=C1[C@H](F)C[C@H]1[C@@H]3CCC(O)(C(=O)CO)[C@@]3(C)C[C@H](O)C12F-expected1228)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1CN2CCOC2(c2ccccc2F)c2cc(Br)ccc2N1-expected1229)
        • PASSED [ 96%]
      • 0 ms
        passed(CCCCCC(N)C(O)(c1ccccc1)c1ccccc1-expected1230)
        • PASSED [ 96%]
      • 0 ms
        passed(OCCN1C=CN(CCCN2c3ccccc3C=Cc3ccccc32)C=CC1-expected1231)
        • PASSED [ 96%]
      • 0 ms
        passed(CCC(C)(O)C1CC23C=CC1(OC)C1Oc4c(OC)ccc5c4C12CCN(CC1CC1)C3C5-expected1232)
        • PASSED [ 96%]
      • 0 ms
        passed(CC(C)(CO)[C@@H](O)C(=O)NCCCC(=O)O-expected1233)
        • PASSED [ 96%]
      • 0 ms
        passed(CCN(CC)CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1234)
        • PASSED [ 96%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1235)
        • PASSED [ 96%]
      • 1 ms
        failed(C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O_O-expected1236)
        • FAILED [ 96%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O-expected1236])
          array([[3]]) != array([4])
          test_input = 'C[C@]12CCC(=O)C=C1CC[C@@H]1[C@@H]2[C@@H](O)C[C@@]2(C)[C@H]1CC[C@]2(O)C(=O)COC(=O)CCC(=O)O.O'
          expected = array([4.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[3]]) == array([4])
          E Full diff:
          E - array([4])
          E ? ^
          E + array([[3]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CCCCC(=O)O[C@]1(C(=O)CO)CCC2C3CCC4=CC(=O)CCC4(C)C3C(O)CC21C-expected1237)
        • PASSED [ 96%]
      • 0 ms
        passed(CC12CCC(=O)C=C1CCC1C2C(O)CC2(C)C1CCC2(O)C(=O)COC(=O)CCC1CCCC1-expected1238)
        • PASSED [ 96%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@H]2[C@@H](O)CC[C@@]3(O)[C@H]1C5-expected1239)
        • PASSED [ 96%]
      • 0 ms
        passed(COc1ccc(Cn2c(C)c(CCN)c3cc(O)ccc32)cc1-expected1240)
        • PASSED [ 96%]
      • 0 ms
        passed(CCC(Br)(C(N)=O)C(C)C-expected1241)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C1CN=C(c2ccccc2)c2cc(Cl)ccc2N1CCOCC1CC1-expected1242)
        • PASSED [ 96%]
      • 0 ms
        passed(Cc1cccc(O[C@H]2CCNC[C@H]2O)c1C-expected1243)
        • PASSED [ 96%]
      • 0 ms
        passed(O=C(/C=C/c1ccc2c(c1)OCO2)N1CCCCC1-expected1244)
        • PASSED [ 96%]
      • 0 ms
        passed(COc1cc(C(C)=O)ccc1OCCCN1CCC(c2noc3cc(F)ccc23)CC1-expected1245)
        • PASSED [ 96%]
      • 0 ms
        passed(CN1CCN(CCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)C1=O-expected1246)
        • PASSED [ 97%]
      • 0 ms
        passed(CN(C)CCN1CCN(c2cccc(Cl)c2)C1=O-expected1247)
        • PASSED [ 97%]
      • 0 ms
        passed(C[N+](C)([O-])CCCN1c2ccccc2CCc2ccccc21-expected1248)
        • PASSED [ 97%]
      • 0 ms
        passed(C1=Cc2cccc(OCC3CNCCO3)c2C1-expected1249)
        • PASSED [ 97%]
      • 0 ms
        passed(COc1ccc2c(c1)c(CC(=O)O)c(C)n2C(=O)c1ccc(Cl)cc1-expected1250)
        • PASSED [ 97%]
      • 0 ms
        passed(CN(C)CCC1(c2ccccc2)C=Cc2ccccc21-expected1251)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(C)NNC(=O)COc1ccc(Cl)cc1-expected1252)
        • PASSED [ 97%]
      • 0 ms
        passed(CSc1c(Cl)nc(NC(C)C)nc1N1CCN(C)CC1-expected1253)
        • PASSED [ 97%]
      • 0 ms
        passed(Cc1cc(C(=O)NNCc2ccccc2)no1-expected1254)
        • PASSED [ 97%]
      • 0 ms
        passed(CC12C=CC(=O)C=C1CCC1C3CCC(O)(C(=O)CO)C3(C)CC(O)C12F-expected1255)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)CC[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(F)[C@@H](O)C[C@@]21C-expected1256)
        • PASSED [ 97%]
      • 0 ms
        passed(CCC[C@@H]1O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)C4(F)[C@@H](O)C[C@]3(C)[C@]2(C(=O)O[C@H](C)OC(=O)OCC)O1-expected1257)
        • PASSED [ 97%]
      • 0 ms
        passed(C=C[C@@H]1CNCC[C@H]1CCCc1ccnc2ccc(OC)cc12-expected1258)
        • PASSED [ 97%]
      • 0 ms
        passed(CC1[C@H]2C(=O)c3ccc(O)cc3[C@]1(C)CCN2CC1CC1-expected1259)
        • PASSED [ 97%]
      • 0 ms
        passed(CC1=CC(=O)N2CC(=O)N(C)c3ccc(Cl)cc3C2(c2ccccc2)O1-expected1260)
        • PASSED [ 97%]
      • 0 ms
        passed(CCC(=O)C1(c2cccc(O)c2)CCN(C)CC1-expected1261)
        • PASSED [ 97%]
      • 0 ms
        passed(Clc1cnn(CCCCN2CCN(c3ncccn3)CC2)c1-expected1262)
        • PASSED [ 97%]
      • 0 ms
        passed(O=C(CN1CCC23CCCCC2C1Cc1ccc(O)cc13)c1ccccc1-expected1263)
        • PASSED [ 97%]
      • 0 ms
        passed(O=C1N(c2ccccc2)c2ccccc2C1(Cc1ccncc1)Cc1ccncc1-expected1264)
        • PASSED [ 97%]
      • 0 ms
        passed(CCN(CC)C(=O)N[C@H]1C=C2c3cccc4[nH]cc(c34)C[C@H]2N(C)C1-expected1265)
        • PASSED [ 97%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1266)
        • PASSED [ 97%]
      • 0 ms
        passed(O=C1CCNc2ccc(Cl)cc2N1c1ccccc1-expected1267)
        • PASSED [ 97%]
      • 0 ms
        passed(CCC(=O)N(c1ccccc1)[C@]1(C(=O)OC)CCN(CCc2ccccc2)C[C@@H]1C-expected1268)
        • PASSED [ 97%]
      • 1 ms
        failed(CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1_[Cl-]_[H+]-expected1269)
        • FAILED [ 97%]
        • [14:08:28] WARNING: not removing hydrogen atom without neighbors
          [14:08:28] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1.[Cl-].[H+]-expected1269])
          array([[0]]) != array([1])
          test_input = 'CN(CCCN1c2ccccc2CCc2ccccc21)CC(=O)c1ccc(Cl)cc1.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(COc1ccc(Cl)c2c1CCCC2N(C)C-expected1270)
        • PASSED [ 97%]
      • 0 ms
        passed(O=C1Nc2ccc(Cl)nc2C(c2ccccc2Cl)=NC1O-expected1271)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1CCN(/C=C2\\N=C3CN=C(c4ccccc4Cl)c4cc([N+](=O)[O-])ccc4N3C2=O)CC1-expected1272)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1C(=O)C(O)N=C(c2ccccc2Cl)c2cc(Cl)ccc21-expected1273)
        • PASSED [ 97%]
      • 0 ms
        passed(FC(F)(F)c1cccc(N2CCN(CCc3nnc4n3C[C@H]3CCC[C@@H]43)CC2)c1-expected1274)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1CC[C@]23NC(=O)CC(c4cc(Cl)ccc4O2)C3C1-expected1275)
        • PASSED [ 97%]
      • 1 ms
        failed(CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl_O-expected1276)
        • FAILED [ 97%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl.O-expected1276])
          array([[2]]) != array([3])
          test_input = 'CN(C(=O)CNC(=O)CN)c1ccc(Cl)cc1C(=O)c1ccccc1Cl.O'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(COC1=CC(=O)OC1C(O)c1ccccc1Cl-expected1277)
        • PASSED [ 97%]
      • 0 ms
        passed(CCOC(=O)OC1(C(=O)OCCl)CCC2C3CCC4=CC(=O)C=CC4(C)C3C(O)CC21C-expected1278)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1-expected1279)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1c2cc(F)ccc2C(c2ccccc2)=NCC1CNC(=O)c1ccoc1-expected1280)
        • PASSED [ 97%]
      • 0 ms
        passed(OC1(c2ccc(Cl)cc2)c2ccccc2C2=NCCN21-expected1281)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1CCN(CC(=O)[C@@]2(O)CC[C@H]3[C@@H]4CCC5=CC(=O)C=C[C@]5(C)[C@H]4[C@@H](O)C[C@@]32C)CC1-expected1282)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(NN)c1ccccc1-expected1283)
        • PASSED [ 97%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(N)=O-expected1284)
        • PASSED [ 97%]
      • 0 ms
        passed(C[C@@H]1N=C(c2ccccc2Cl)c2cc([N+](=O)[O-])ccc2NC1=O-expected1285)
        • PASSED [ 97%]
      • 0 ms
        passed(CNC(=O)NC(O)C(Cl)(Cl)Cl-expected1286)
        • PASSED [ 97%]
      • 0 ms
        passed(C[C@@H]1CC2C3CCC4=CC(=O)C=CC4(C)[C@@]3(Cl)C(Cl)CC2(C)[C@@]1(O)C(=O)CO-expected1287)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(=O)[C@H]1CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)CC[C@]4(C)[C@H]3[C@@H](O)C[C@]12C-expected1288)
        • PASSED [ 97%]
      • 1 ms
        failed(CCN(CC)CCNC(=O)COc1ccc(OC)cc1_[Cl-]_[H+]-expected1289)
        • FAILED [ 97%]
        • [14:08:29] WARNING: not removing hydrogen atom without neighbors
          [14:08:29] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CCN(CC)CCNC(=O)COc1ccc(OC)cc1.[Cl-].[H+]-expected1289])
          array([[1]]) != array([2])
          test_input = 'CCN(CC)CCNC(=O)COc1ccc(OC)cc1.[Cl-].[H+]', expected = array([2.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[1]]) == array([2])
          E Full diff:
          E - array([2])
          E ? ^
          E + array([[1]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(CN(C)CCC=C1c2ccccc2C(C)(C)c2ccccc21-expected1290)
        • PASSED [ 97%]
      • 0 ms
        passed(CC1CCN(CCCC(=O)c2ccc(F)cc2)CC1-expected1291)
        • PASSED [ 97%]
      • 0 ms
        passed(CC12CC3CC(C)(C1)CC(N)(C3)C2-expected1292)
        • PASSED [ 97%]
      • 0 ms
        passed(COc1ccccc1OCC1CNC(=O)O1-expected1293)
        • PASSED [ 97%]
      • 0 ms
        passed(COc1ccc2c(c1)C(O)(CCCN(C)C)c1ccccc1S2-expected1294)
        • PASSED [ 97%]
      • 0 ms
        passed(CN1C[C@@H](NS(=O)(=O)N(C)C)C[C@@H]2c3cccc4c3c(cn4C)C[C@H]21-expected1295)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(=O)Nc1cccc(O)c1-expected1296)
        • PASSED [ 97%]
      • 0 ms
        passed(CC(C)(O)C(C)(O)c1cccc(Cl)c1-expected1297)
        • PASSED [ 97%]
      • 0 ms
        passed(CN(C)CCN(Cc1cccs1)c1ccccn1-expected1298)
        • PASSED [ 97%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(C)C1=O-expected1299)
        • PASSED [ 97%]
      • 0 ms
        passed(CCCC(C)C1(CCSC)C(=O)NC(=S)NC1=O-expected1300)
        • PASSED [ 97%]
      • 0 ms
        passed(CC1=CCC2C3Cc4ccc(O)c5c4C2(CCN3C)C1O5-expected1301)
        • PASSED [ 97%]
      • 0 ms
        passed(CO[C@H]1CC[C@H]2[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1302)
        • PASSED [ 98%]
      • 0 ms
        passed(CCC(=O)O[C@]1(C(=O)COC(C)=O)CC[C@H]2[C@@H]3C[C@H](C)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1303)
        • PASSED [ 98%]
      • 0 ms
        passed(Cc1ccc2c(c1)C(N1CCN(C)CC1)=Nc1ccccc1S2-expected1304)
        • PASSED [ 98%]
      • 0 ms
        passed(COc1cc(C(=O)OCCN2CCN(CCCN3c4ccccc4Sc4ccc(Cl)cc43)CC2)cc(OC)c1OC-expected1305)
        • PASSED [ 98%]
      • 0 ms
        passed(CS(=O)(=O)c1ccc2c(c1)N(CCCN1CCC(C(N)=O)CC1)c1ccccc1S2-expected1306)
        • PASSED [ 98%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(O)c4O[C@@]2(C)C(=O)CC[C@H]3[C@H]1C5-expected1307)
        • PASSED [ 98%]
      • 0 ms
        passed(COC(=O)C1C2CC3c4[nH]c5cc(OC)ccc5c4CCN3CC2CC(OC)C1OC-expected1308)
        • PASSED [ 98%]
      • 0 ms
        passed(COc1ccc2c(c1)C(N1CCN(C)CC1)=Cc1ccccc1O2-expected1309)
        • PASSED [ 98%]
      • 0 ms
        passed(COc1ccc2c(c1)c1c3n2CCN(C)C3=NCC1-expected1310)
        • PASSED [ 98%]
      • 0 ms
        passed(CC[C@H](C)C(=O)O[C@H]1CCC=C2C=C[C@H](C)[C@H](CC[C@@H]3C[C@@H](O)CC(=O)O3)[C@H]21-expected1311)
        • PASSED [ 98%]
      • 0 ms
        passed(CC1COC2(c3ccccc3Cl)c3cc(Cl)ccc3NC(=O)CN12-expected1312)
        • PASSED [ 98%]
      • 0 ms
        passed(CNc1nc(Cl)c(SC)c(N2CCN(C)CC2)n1-expected1313)
        • PASSED [ 98%]
      • 0 ms
        passed(Clc1ccc(COC(Cn2ccnc2)c2ccc(Cl)cc2Cl)c(Cl)c1-expected1314)
        • PASSED [ 98%]
      • 0 ms
        passed(NC1=NC(C(F)(F)F)(C(F)(F)F)NC1(C(F)(F)F)C(F)(F)F-expected1315)
        • PASSED [ 98%]
      • 0 ms
        passed(CCCCCNCC(N)=O-expected1316)
        • PASSED [ 98%]
      • 0 ms
        passed(CO/N=C/C1=CCCN(C)C1-expected1317)
        • PASSED [ 98%]
      • 0 ms
        passed(Cc1cc(-c2ccccc2)nnc1NCCN1CCOCC1-expected1318)
        • PASSED [ 98%]
      • 0 ms
        passed(CCO[C@H]1C[C@@]2(C)[C@@H](CC[C@@H]3[C@@H]2[C@H](N(C)C)C[C@]2(C)[C@@H](C(C)=O)CC[C@@H]32)C[C@@H]1O-expected1319)
        • PASSED [ 98%]
      • 0 ms
        passed(CN1[C@@H]2CC[C@H]1CC(NC(=O)c1cn(C3CCCCC3)c3ccccc3c1=O)C2-expected1320)
        • PASSED [ 98%]
      • 0 ms
        passed(O=C(NCCN1CCOCC1)c1ccc(Cl)cc1-expected1321)
        • PASSED [ 98%]
      • 0 ms
        passed(NC(=O)CS(=O)C(c1ccccc1)c1ccccc1-expected1322)
        • PASSED [ 98%]
      • 0 ms
        passed(C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@]4(C)[C@@]3(Cl)[C@@H](O)C[C@]2(C)[C@@]1(O)C(=O)CCl-expected1323)
        • PASSED [ 98%]
      • 0 ms
        passed(CNCCCN1c2ccccc2C(C)(C)c2ccccc21-expected1324)
        • PASSED [ 98%]
      • 0 ms
        passed(CC1(c2ccccc2)CC(=O)N(CN2CCOCC2)C1=O-expected1325)
        • PASSED [ 98%]
      • 0 ms
        passed(O=C1NC2CCCCN2C12CCN(CCCN1c3ccccc3CCc3ccc(Cl)cc31)CC2-expected1326)
        • PASSED [ 98%]
      • 0 ms
        passed(COCN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1327)
        • PASSED [ 98%]
      • 0 ms
        passed(CNC(=O)O[C@H]1OC(=O)[C@@]2(C)[C@@H]1[C@H]1C=C[C@@H]2C1-expected1328)
        • PASSED [ 98%]
      • 0 ms
        passed(CC1=CC(=C2C=CC(=O)C=C2)NN=C1NCCN1CCOCC1-expected1329)
        • PASSED [ 98%]
      • 0 ms
        passed(CCCCCCCCCCCCCC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(OCc5ccccc5)c5c4[C@@]2(CCN3C)[C@H]1O5-expected1330)
        • PASSED [ 98%]
      • 0 ms
        passed(CCCCCC(C)C(C)c1cc(OC(=O)CCCN2CCCCCC2)c2c(c1)OC(C)(C)C1=C2CC(C)CC1-expected1331)
        • PASSED [ 98%]
      • 0 ms
        passed(CCCCCCC(C)(C)c1cc(O)c2c(c1)OC(C)(C)[C@@H]1CCC(=O)C[C@@H]21-expected1332)
        • PASSED [ 98%]
      • 0 ms
        passed(O=C(Cn1ccnc1)c1ccc2ccccc2c1-expected1333)
        • PASSED [ 98%]
      • 1 ms
        failed(C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F_O-expected1334)
        • FAILED [ 98%]
        • test_featurizers.py:57 (test_num_hdonor_featurizer[C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F.O-expected1334])
          array([[2]]) != array([3])
          test_input = 'C[C@]12C=CC(=O)C=C1CC[C@H]1[C@@H]3C[C@H]4Cc5ccccc5C[C@@]4(C(=O)CO)[C@@]3(C)C[C@H](O)[C@@]12F.O'
          expected = array([3.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[2]]) == array([3])
          E Full diff:
          E - array([3])
          E ? ^
          E + array([[2]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)CCC4(O)C(C2)N(CC2CCC2)CCC314-expected1335)
        • PASSED [ 98%]
      • 0 ms
        passed(C=C1CC[C@@]2(O)[C@H]3Cc4ccc(O)c5c4[C@@]2(CCN3CC2CC2)[C@H]1O5-expected1336)
        • PASSED [ 98%]
      • 0 ms
        passed(CC(C)=CCN1CC[C@]23c4c5ccc(O)c4O[C@H]2C(=O)CC[C@@]3(O)[C@H]1C5-expected1337)
        • PASSED [ 98%]
      • 0 ms
        passed(CN=C(Cc1ccc2ccccc2c1)[NH2+]C_[Cl-]-expected1338)
        • PASSED [ 98%]
      • 0 ms
        passed(C1=C(CC2=NCNC2)CCc2ccccc21-expected1339)
        • PASSED [ 98%]
      • 0 ms
        passed(CC(Oc1cccc2ccccc12)/C(N)=N/O-expected1340)
        • PASSED [ 98%]
      • 1 ms
        failed(CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1_[Cl-]_[H+]-expected1341)
        • FAILED [ 98%]
        • [14:08:29] WARNING: not removing hydrogen atom without neighbors
          [14:08:29] WARNING: not removing hydrogen atom without neighbors
          test_featurizers.py:57 (test_num_hdonor_featurizer[CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1.[Cl-].[H+]-expected1341])
          array([[0]]) != array([1])
          test_input = 'CCc1nn(CCCN2CCN(c3cccc(Cl)c3)CC2)c(=O)n1CCOc1ccccc1.[Cl-].[H+]'
          expected = array([1.])
          @pytest.mark.parametrize(
          "test_input, expected",
          extract_molecule_properties(property_bank=PROPERTY_BANK, property="num_hdonors"),
          )
          def test_num_hdonor_featurizer(test_input, expected):
          featurizer = HDonorCountFeaturizer()
          molecule = MOLECULE(test_input)

          results = featurizer.featurize(molecule)

          > assert results == expected.astype(int)
          E assert array([[0]]) == array([1])
          E Full diff:
          E - array([1])
          E ? ^
          E + array([[0]])
          E ? ^^^
          test_featurizers.py:68: AssertionError
      • 0 ms
        passed(Cc1cccc(C)c1NC(=O)CN1CCCC1=O-expected1342)
        • PASSED [ 98%]
      • 0 ms
        passed(O=c1[nH]c2ccccc2n1C1CCN(CCCc2noc3cc(F)ccc23)CC1-expected1343)
        • PASSED [ 98%]
      • 0 ms
        passed(O=C(CCNNC(=O)c1ccncc1)NCc1ccccc1-expected1344)
        • PASSED [ 98%]
      • 0 ms
        passed(CC(CCN1CCN(c2ccc(F)cc2)CC1)NC(=O)c1cccnc1-expected1345)
        • PASSED [ 98%]
      • 0 ms
        passed(C/C=C\\C1O[C@]2(C(=O)COC(=O)c3ccncc3)CC[C@@]3(O1)[C@@H]1CCC4=CC(=O)CC[C@]4(C)[C@H]1[C@@H](O)C[C@]23C-expected1346)
        • PASSED [ 98%]
      • 0 ms
        passed(CN1CC[C@]23c4c5ccc(OC(=O)c6cccnc6)c4O[C@H]2[C@@H](OC(=O)c2cccnc2)C=C[C@H]3[C@H]1C5-expected1347)
        • PASSED [ 98%]
      • 0 ms
        passed(O=C(c1cccnc1)N1CCOCC1-expected1348)
        • PASSED [ 98%]
      • 0 ms
        passed(NC(=O)c1cccnc1-expected1349)
        • PASSED [ 98%]
      • 0 ms
        passed(CCN(CC)C(=O)c1cccnc1-expected1350)
        • PASSED [ 98%]
      • 0 ms
        passed(CN1C(=O)CN=C(c2ccccc2)c2cc([N+](=O)[O-])ccc21-expected1351)
        • PASSED [ 98%]
      • 0 ms
        passed(CCC(C)C(C)(COC(N)=O)COC(=O)NC(C)C-expected1352)
        • PASSED [ 98%]
      • 0 ms
        passed(CNCCC(Oc1ccccc1OC)c1ccccc1-expected1353)
        • PASSED [ 98%]
      • 0 ms
        passed(N=C(N)c1ccc(-c2ccccc2[N+](=O)[O-])o1-expected1354)
        • PASSED [ 98%]
      • 0 ms
        passed(C#C[C@]1(O)CC[C@H]2C3CCC4=Cc5c(cnn5-c5ccc(F)cc5)CC4(C)[C@H]3CCC21C-expected1355)
        • PASSED [ 98%]
      • 0 ms
        passed(CNC/C=C(/c1ccc(Br)cc1)c1cccnc1-expected1356)
        • PASSED [ 98%]
      • 0 ms
        passed(CN1Cc2c(N)cccc2C(c2ccccc2)C1-expected1357)
        • PASSED [ 98%]
      • 0 ms
        passed(CCCCCCCCCNc1ncnc2[nH]ccc12-expected1358)
        • PASSED [ 98%]
      • 0 ms
        passed(FCC(F)(F)F-expected1359)
        • PASSED [ 99%]
      • 0 ms
        passed(Oc1ccc2c(c1)C13CCCCC1C(C2)NCC3-expected1360)
        • PASSED [ 99%]
      • 0 ms
        passed(Oc1ccc2c3c1OC1C(O)C=CC4C(C2)NCCC341-expected1361)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C1CN=C(C2=CCCCC2)c2cc(Cl)ccc2N1-expected1362)
        • PASSED [ 99%]
      • 0 ms
        passed(COc1ccc2c(c1OC)C(=O)O[C@@H]2[C@H]1c2c(cc3c(c2OC)OCO3)CCN1C-expected1363)
        • PASSED [ 99%]
      • 0 ms
        passed(CN(C)CCON=C1c2ccccc2CCc2ccccc21-expected1364)
        • PASSED [ 99%]
      • 0 ms
        passed(Clc1ccc2c(c1)/C(=C/C1CN3CCC1CC3)c1ccccc1S2-expected1365)
        • PASSED [ 99%]
      • 0 ms
        passed(Cc1nc2c(C)cccn2c(=O)c1CCN1CCC(c2noc3cc(F)ccc23)CC1-expected1366)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(c1ccccn1)c1cnn2c(-c3ccncc3)ccnc12-expected1367)
        • PASSED [ 99%]
      • 0 ms
        passed(CCCCCCC(C)NN-expected1368)
        • PASSED [ 99%]
      • 0 ms
        passed(CNCCC=C1c2ccccc2C2CC2c2ccccc21-expected1369)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(CN1CC[C@H](c2ccc(F)cc2)[C@@H](COc2ccc3c(c2)OCO3)C1)c1ccc(F)cc1-expected1370)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(C)N1CCOC(c2ccc(C(F)(F)F)cc2)C1-expected1371)
        • PASSED [ 99%]
      • 0 ms
        passed(NC(=O)N1c2ccccc2CC(=O)c2ccccc21-expected1372)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(Cc1ccccc1)[N+](C)([O-])Cc1ccccc1-expected1373)
        • PASSED [ 99%]
      • 0 ms
        passed(NC(=O)CN1CC(O)CC1=O-expected1374)
        • PASSED [ 99%]
      • 0 ms
        passed(COC(=O)[C@@]1(O)CC[C@H]2C3CCC(=O)C4C(=O)C=CC4(C)[C@H]3C(O)CC21C-expected1375)
        • PASSED [ 99%]
      • 0 ms
        passed(NC(Cc1c[nH]c2ccc(O)cc12)C(=O)O-expected1376)
        • PASSED [ 99%]
      • 0 ms
        passed(CN(C)C(=O)COC1c2ccccc2CCc2ccccc21-expected1377)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(C)CCC(=O)CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1-expected1378)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(C)n1c(=O)c2c(-c3noc(C4CC4)n3)ncn2c2ccccc21-expected1379)
        • PASSED [ 99%]
      • 0 ms
        passed(COc1ccc(N2C[C@H](CN3CCC(O)(c4ccc5c(c4)OCO5)CC3)OC2=O)cc1-expected1380)
        • PASSED [ 99%]
      • 0 ms
        passed(Nc1cc(OCC2CC2)c(C(=O)NC2CN3CCC2CC3)cc1Cl-expected1381)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(NC(=O)c1ccccc1)NC1CCN(Cc2ccc3ccccc3c2)CC1-expected1382)
        • PASSED [ 99%]
      • 0 ms
        passed(CC1OC(C)OC(C)O1-expected1383)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(=O)OCC(=O)[C@@]1(O)[C@H](C)C[C@H]2[C@@H]3C[C@H](F)C4=CC(=O)C=C[C@]4(C)[C@H]3[C@@H](O)C[C@@]21C-expected1384)
        • PASSED [ 99%]
      • 0 ms
        passed(C#CCN(C)Cc1ccccc1-expected1385)
        • PASSED [ 99%]
      • 0 ms
        passed(Fc1ccc([C@@H]2CCNC[C@H]2COc2ccc3c(c2)OCO3)cc1-expected1386)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(CC1c2ccccc2C(=O)N1c1ccc2ccc(Cl)nc2n1)N1CCC2(CC1)OCCO2-expected1387)
        • PASSED [ 99%]
      • 0 ms
        passed(OC1(c2ccc(Cl)c(C(F)(F)F)c2)CCN(CCCC(c2ccc(F)cc2)c2ccc(F)cc2)CC1-expected1388)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(OC(N)=O)C(C)C(C)OC(N)=O-expected1389)
        • PASSED [ 99%]
      • 0 ms
        passed(CCCCCN[C@@]12C=CC(=O)[C@@H]3Oc4c(O)ccc5c4[C@@]31CCN(C)[C@@H]2C5-expected1390)
        • PASSED [ 99%]
      • 0 ms
        passed(OCC1(CO)COC(C(Cl)(Cl)Cl)OC1-expected1391)
        • PASSED [ 99%]
      • 0 ms
        passed(CN1CCN(C2=Nc3ccccc3Sc3nccn32)CC1-expected1392)
        • PASSED [ 99%]
      • 0 ms
        passed(c1ccc(-c2nc(N3CCNCC3)cc3ccccc23)cc1-expected1393)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C1[C@H]2CCCC[C@H]2C(=O)N1CCCCN1CCN(c2nsc3ccccc23)CC1-expected1394)
        • PASSED [ 99%]
      • 0 ms
        passed(OCCN1CCN(CCCN2c3ccccc3Sc3ccc(Cl)cc32)CC1-expected1395)
        • PASSED [ 99%]
      • 0 ms
        passed(OC(OCC(COC(O)C(Cl)(Cl)Cl)(COC(O)C(Cl)(Cl)Cl)COC(O)C(Cl)(Cl)Cl)C(Cl)(Cl)Cl-expected1396)
        • PASSED [ 99%]
      • 0 ms
        passed(NC(=O)NC(=O)Cc1ccccc1-expected1397)
        • PASSED [ 99%]
      • 0 ms
        passed(CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1-expected1398)
        • PASSED [ 99%]
      • 0 ms
        passed(CCC(C(=O)NC(N)=O)c1ccccc1-expected1399)
        • PASSED [ 99%]
      • 0 ms
        passed(CC1NCCOC1c1ccccc1-expected1400)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(COc1ccccc1)NN-expected1401)
        • PASSED [ 99%]
      • 0 ms
        passed(CN1C(=O)CC(c2ccccc2)C1=O-expected1402)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C([O-])c1ccccc1Oc1ccccc1-expected1403)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C1NC(=O)C(c2ccccc2)(c2ccccc2)N1-expected1404)
        • PASSED [ 99%]
      • 0 ms
        passed(CCC1(CC)C(=O)NC(=O)N(c2ccccc2)C1=O-expected1405)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(c1ccccn1)N1CCN(Cc2ccccc2)CC1-expected1406)
        • PASSED [ 99%]
      • 0 ms
        passed(CCC[C@]1(c2cccc(O)c2)CCN(C)C[C@@H]1C-expected1407)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(=O)Nc1ccc(OC(=O)[C@@H]2CCC(=O)N2)cc1-expected1408)
        • PASSED [ 99%]
      • 0 ms
        passed(c1ccc(-c2cc(CCC3CCNCC3)c3ccccc3n2)cc1-expected1409)
        • PASSED [ 99%]
      • 0 ms
        passed(CC(=O)c1ccc2c(c1)N(CCCN1CCC(CCO)CC1)c1ccccc1S2-expected1410)
        • PASSED [ 99%]
      • 0 ms
        passed(O=C(OCCN1CCCCC1)C(O)(c1ccccc1)c1ccccc1-expected1411)
        • PASSED [ 99%]
      • 0 ms
        passed(CN1CCN(c2cc3c(nn2)Oc2ccccc2N3C)CC1-expected1412)
        • PASSED [ 99%]
      • 0 ms
        passed(CCCCCCCCCCCCCCCC(=O)OCCC1CCN(CCCN2c3ccccc3Sc3ccc(S(=O)(=O)N(C)C)cc32)CC1-expected1413)
        • PASSED [ 99%]
      • 0 ms
        passed(CCc1c(C)[nH]c2c1C(=O)[C@@H]1CN(C)CC[C@H]1C2-expected1414)
        • PASSED [ 99%]
      • 0 ms
        passed(NC(=O)CN1CCCC1=O-expected1415)
        • PASSED [100%]

Generated by PyCharm on 01/06/2023, 14:10